| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * 3RDPARTY.A - Support for other compiler's runtime libraries *
- * *
- * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- include "corelib.inc"
- module ThirdParty
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- segment _DATA(DATA, 28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- extrn __FatalError
- extrn __stk_base
- CSVar = 2
- IPVar = 0
- public __chkstk:
- (*%F NearCall *)
- pop cx
- (*%E *)
- pop dx
- mov bx,sp
- sub bx,ax
- jb stackError
- cmp bx, [__stk_base]
- jb stackError
- mov sp,bx
- push dx
- (*%F NearCall *)
- push cx
- (*%E *)
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- stackError:
- mov bx, sp
- mov ax, 1
- push ax
- push ss:[bx][IPVar]
- (*%T NearCall*) push cs (*%E*)
- (*%F NearCall*) push ss:[bx][CSVar] (*%E*)
- call far __FatalError
- (**************************************************************************)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public _setjmp :
- extrn __setjmp
- jmp far __setjmp
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aNldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- divPtr = sframe
- divisor = 2+sframe
- (*%T NearCall *)
- (*%T NearPtr *)
- public __aldiv :
- (*%E *)
- (*%E *)
- public __aNNaldiv:
- push bp
- mov bp, sp
- mov bx, ss:[bp][divPtr]
- push ds
- pop es
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call __aNldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aNldiv
- extrn __aFldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- divPtr = lframe
- divisor = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __aldiv :
- (*%E *)
- (*%E *)
- public __aFNaldiv:
- push bp
- mov bp, sp
- mov bx, ss:[bp][divPtr]
- push ds
- pop es
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aNldiv
- extrn __aFldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- divPtr = sframe
- divisor = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __aldiv :
- (*%E *)
- (*%E *)
- public __aNFaldiv:
- push bp
- mov bp, sp
- les bx, ss:[bp][divPtr]
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call __aNldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aNldiv
- extrn __aFldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- divPtr = lframe
- divisor = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __aldiv :
- (*%E *)
- (*%E *)
- public __aFFaldiv:
- push bp
- mov bp, sp
- les bx, ss:[bp][divPtr]
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- dsW1 = sframe
- dsW2 = 2+sframe
- dvW1 = 4+sframe
- dvW2 = 6+sframe
- (*%T NearCall *)
- public __ldiv :
- (*%E *)
- public __aNldiv :
- push bp
- mov bp, sp
- push bx
- push di
- push si
- sub di, di
- mov ax, [bp][dsW2]
- or ax, ax
- jge local1
- inc di
- mov dx, [bp][dsW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][dsW2], ax
- mov [bp][dsW1], dx
- local1:
- mov ax, [bp][dvW2]
- or ax, ax
- jge local2
- inc di
- mov dx, [bp][dvW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][dvW2], ax
- mov [bp][dvW1], dx
- local2:
- or ax, ax
- jne local3
- mov cx, [bp][dvW1]
- mov ax, [bp][dsW2]
- sub dx, dx
- div cx
- mov bx, ax
- mov ax, [bp][dsW1]
- div cx
- mov dx, bx
- jmp local7
- local3:
- mov bx, ax
- mov cx, [bp][dvW1]
- mov dx, [bp][dsW2]
- mov ax, [bp][dsW1]
- local4:
- shr bx, 1
- rcr cx, 1
- shr dx, 1
- rcr ax, 1
- or bx, bx
- jne local4
- div cx
- mov si, ax
- mul word [bp][dvW2]
- xchg ax, cx
- mov ax, [bp][dvW1]
- mul si
- add dx, cx
- jb local5
- cmp dx, [bp][dsW2]
- ja local5
- jb local6
- cmp ax, [bp][dsW1]
- jbe local6
- local5:
- dec si
- local6:
- sub dx, dx
- xchg ax, si
- local7:
- dec di
- jne local8
- neg dx
- neg ax
- sbb dx, 0
- local8:
- pop si
- pop di
- pop bx
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- dsW1 = lframe
- dsW2 = 2+lframe
- dvW1 = 4+lframe
- dvW2 = 6+lframe
- (*%F NearCall *)
- public __ldiv :
- (*%E *)
- public __aFldiv :
- push bp
- mov bp, sp
- push bx
- push di
- push si
- sub di, di
- mov ax, [bp][dsW2]
- or ax, ax
- jge local1
- inc di
- mov dx, [bp][dsW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][dsW2], ax
- mov [bp][dsW1], dx
- local1:
- mov ax, [bp][dvW2]
- or ax, ax
- jge local2
- inc di
- mov dx, [bp][dvW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][dvW2], ax
- mov [bp][dvW1], dx
- local2:
- or ax, ax
- jne local3
- mov cx, [bp][dvW1]
- mov ax, [bp][dsW2]
- sub dx, dx
- div cx
- mov bx, ax
- mov ax, [bp][dsW1]
- div cx
- mov dx, bx
- jmp local7
- local3:
- mov bx, ax
- mov cx, [bp][dvW1]
- mov dx, [bp][dsW2]
- mov ax, [bp][dsW1]
- local4:
- shr bx, 1
- rcr cx, 1
- shr dx, 1
- rcr ax, 1
- or bx, bx
- jne local4
- div cx
- mov si, ax
- mul word [bp][dvW2]
- xchg ax, cx
- mov ax, [bp][dvW1]
- mul si
- add dx, cx
- jb local5
- cmp dx, [bp][dsW2]
- ja local5
- jb local6
- cmp ax, [bp][dsW1]
- jbe local6
- local5:
- dec si
- local6:
- sub dx, dx
- xchg ax, si
- local7:
- dec di
- jne local8
- neg dx
- neg ax
- sbb dx, 0
- local8:
- pop si
- pop di
- pop bx
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlmul
- extrn __aNlmul
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- mulPtr = sframe
- mulp = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __almul :
- public __ulmul :
- (*%E *)
- (*%E *)
- public __aNNaulmul:
- public __aNNalmul:
- push bp
- mov bp, sp
- mov bx, ss:[bp][mulPtr]
- push ds
- pop es
- push [bp][mulp][2]
- push [bp][mulp]
- push es:[bx][2]
- push es:[bx]
- call __aNlmul
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlmul
- extrn __aNlmul
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- mulPtr = lframe
- mulp = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __almul :
- public __ulmul :
- (*%E *)
- (*%E *)
- public __aFNaulmul:
- public __aFNalmul:
- push bp
- mov bp, sp
- mov bx, ss:[bp][mulPtr]
- push ds
- pop es
- push [bp][mulp][2]
- push [bp][mulp]
- push es:[bx][2]
- push es:[bx]
- call far __aFlmul
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlmul
- extrn __aNlmul
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- mulPtr = sframe
- mulp = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __almul :
- public __ulmul :
- (*%E *)
- (*%E *)
- public __aNFaulmul:
- public __aNFalmul:
- push bp
- mov bp, sp
- les bx, ss:[bp][mulPtr]
- push [bp][mulp][2]
- push [bp][mulp]
- push es:[bx][2]
- push es:[bx]
- call __aNlmul
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlmul
- extrn __aNlmul
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- mulPtr = lframe
- mulp = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __almul :
- public __ulmul :
- (*%E *)
- (*%E *)
- public __aFFaulmul:
- public __aFFalmul:
- push bp
- mov bp, sp
- les bx, ss:[bp][mulPtr]
- push [bp][mulp][2]
- push [bp][mulp]
- push es:[bx][2]
- push es:[bx]
- call far __aFlmul
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- msW1 = lframe
- msW2 = 2+lframe
- mvW1 = 4+lframe
- mvW2 = 6+lframe
- (*%F NearCall *)
- public __lmul :
- (*%E *)
- public __aFulmul :
- public __aFlmul :
- push bp
- mov bp, sp
- push bx
- mov ax, [bp][msW2]
- mov bx, [bp][mvW2]
- or bx, ax
- mov bx, [bp][mvW1]
- jne local1
- mov ax, [bp][msW1]
- mul bx
- jmp mulExit
- local1:
- mul bx
- mov cx, ax
- mov ax, [bp][msW1]
- mul word [bp][mvW2]
- add cx, ax
- mov ax, [bp][msW1]
- mul bx
- add dx, cx
- mulExit:
- pop bx
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- msW1 = sframe
- msW2 = 2+sframe
- mvW1 = 4+sframe
- mvW2 = 6+sframe
- (*%T NearCall *)
- public __lmul :
- (*%E *)
- public __aNulmul :
- public __aNlmul :
- push bp
- mov bp, sp
- push bx
- mov ax, [bp][msW2]
- mov bx, [bp][mvW2]
- or bx, ax
- mov bx, [bp][mvW1]
- jne local1
- mov ax, [bp][msW1]
- mul bx
- jmp mulExit
- local1:
- mul bx
- mov cx, ax
- mov ax, [bp][msW1]
- mul word [bp][mvW2]
- add cx, ax
- mov ax, [bp][msW1]
- mul bx
- add dx, cx
- mulExit:
- pop bx
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlrem
- extrn __aNlrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- remPtr = sframe
- remp = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __alrem :
- (*%E *)
- (*%E *)
- public __aNNalrem:
- push bp
- mov bp, sp
- mov bx, ss:[bp][remPtr]
- push ds
- pop es
- push [bp][remp][2]
- push [bp][remp]
- push es:[bx][2]
- push es:[bx]
- call __aNlrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlrem
- extrn __aNlrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- remPtr = lframe
- remp = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __alrem :
- (*%E *)
- (*%E *)
- public __aFNalrem:
- push bp
- mov bp, sp
- mov bx, ss:[bp][remPtr]
- push ds
- pop es
- push [bp][remp][2]
- push [bp][remp]
- push es:[bx][2]
- push es:[bx]
- call far __aFlrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlrem
- extrn __aNlrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- remPtr = sframe
- remp = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __alrem :
- (*%E *)
- (*%E *)
- public __aNFalrem:
- push bp
- mov bp, sp
- les bx, ss:[bp][remPtr]
- push [bp][remp][2]
- push [bp][remp]
- push es:[bx][2]
- push es:[bx]
- call __aNlrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlrem
- extrn __aNlrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- remPtr = lframe
- remp = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __alrem :
- (*%E *)
- (*%E *)
- public __aFFalrem:
- push bp
- mov bp, sp
- les bx, ss:[bp][remPtr]
- push [bp][remp][2]
- push [bp][remp]
- push es:[bx][2]
- push es:[bx]
- call far __aFlrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- rsW1 = sframe
- rsW2 = 2+sframe
- rvW1 = 4+sframe
- rvW2 = 6+sframe
- (*%T NearCall *)
- public __lrem:
- (*%E *)
- public __aNlrem:
- push bp
- mov bp, sp
- push bx
- push di
- sub di, di
- mov ax, [bp][rsW2]
- or ax, ax
- jge local1
- inc di
- mov dx, [bp][rsW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][rsW2], ax
- mov [bp][rsW1], dx
- local1:
- mov ax, [bp][rvW2]
- or ax, ax
- jge local2
- mov dx, [bp][rvW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][rvW2], ax
- mov [bp][rvW1], dx
- local2:
- or ax, ax
- jne local3
- mov cx, [bp][rvW1]
- mov ax, [bp][rsW2]
- sub dx, dx
- div cx
- mov ax, [bp][rsW1]
- div cx
- mov ax, dx
- sub dx, dx
- dec di
- jns local7
- jmp local8
- local3:
- mov bx, ax
- mov cx, [bp][rvW1]
- mov dx, [bp][rsW2]
- mov ax, [bp][rsW1]
- local4:
- shr bx, 1
- rcr cx, 1
- shr dx, 1
- rcr ax, 1
- or bx, bx
- jne local4
- div cx
- mov cx, ax
- mul word [bp][rvW2]
- xchg ax, cx
- mul word [bp][rvW1]
- add dx, cx
- jb local5
- cmp dx, [bp][rsW2]
- ja local5
- jb local6
- cmp ax, [bp][rsW1]
- jbe local6
- local5:
- sub ax, [bp][rvW1]
- sbb dx, [bp][rvW2]
- local6:
- sub ax, [bp][rsW1]
- sbb dx, [bp][rsW2]
- dec di
- jns local8
- local7:
- neg dx
- neg ax
- sbb dx, 0
- local8:
- pop di
- pop bx
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- rsW1 = lframe
- rsW2 = 2+lframe
- rvW1 = 4+lframe
- rvW2 = 6+lframe
- (*%F NearCall *)
- public __lrem:
- (*%E *)
- public __aFlrem:
- push bp
- mov bp, sp
- push bx
- push di
- sub di, di
- mov ax, [bp][rsW2]
- or ax, ax
- jge local1
- inc di
- mov dx, [bp][rsW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][rsW2], ax
- mov [bp][rsW1], dx
- local1:
- mov ax, [bp][rvW2]
- or ax, ax
- jge local2
- mov dx, [bp][rvW1]
- neg ax
- neg dx
- sbb ax, 0
- mov [bp][rvW2], ax
- mov [bp][rvW1], dx
- local2:
- or ax, ax
- jne local3
- mov cx, [bp][rvW1]
- mov ax, [bp][rsW2]
- sub dx, dx
- div cx
- mov ax, [bp][rsW1]
- div cx
- mov ax, dx
- sub dx, dx
- dec di
- jns local7
- jmp local8
- local3:
- mov bx, ax
- mov cx, [bp][rvW1]
- mov dx, [bp][rsW2]
- mov ax, [bp][rsW1]
- local4:
- shr bx, 1
- rcr cx, 1
- shr dx, 1
- rcr ax, 1
- or bx, bx
- jne local4
- div cx
- mov cx, ax
- mul word [bp][rvW2]
- xchg ax, cx
- mul word [bp][rvW1]
- add dx, cx
- jb local5
- cmp dx, [bp][rsW2]
- ja local5
- jb local6
- cmp ax, [bp][rsW1]
- jbe local6
- local5:
- sub ax, [bp][rvW1]
- sbb dx, [bp][rvW2]
- local6:
- sub ax, [bp][rsW1]
- sbb dx, [bp][rsW2]
- dec di
- jns local8
- local7:
- neg dx
- neg ax
- sbb dx, 0
- local8:
- pop di
- pop bx
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshl
- extrn __aNlshl
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shlPtr = sframe
- shlp = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __alshl :
- (*%E *)
- (*%E *)
- public __aNNalshl:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shlPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shlp]
- call __aNlshl
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshl
- extrn __aNlshl
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shlPtr = lframe
- shlp = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __alshl :
- (*%E *)
- (*%E *)
- public __aFNalshl:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shlPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shlp]
- call far __aFlshl
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshl
- extrn __aNlshl
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shlPtr = sframe
- shlp = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __alshl :
- (*%E *)
- (*%E *)
- public __aNFalshl:
- push bp
- mov bp, sp
- les bx, ss:[bp][shlPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shlp]
- call __aNlshl
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshl
- extrn __aNlshl
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shlPtr = lframe
- shlp = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __alshl :
- (*%E *)
- (*%E *)
- public __aFFalshl:
- push bp
- mov bp, sp
- les bx, ss:[bp][shlPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shlp]
- call far __aFlshl
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%T NearCall *)
- public __lshl:
- (*%E *)
- public __aNlshl:
- sub ch,ch
- jcxz local2
- local1:
- shl ax,1
- rcl dx,1
- loop local1
- local2:
- ret 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%F NearCall *)
- public __lshl:
- (*%E *)
- public __aFlshl:
- sub ch,ch
- jcxz local2
- local1:
- shl ax,1
- rcl dx,1
- loop local1
- local2:
- ret far 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshr
- extrn __aNlshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shrPtr = sframe
- shrp = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __alshr :
- (*%E *)
- (*%E *)
- public __aNNalshr:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shrPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrp]
- call __aNlshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshr
- extrn __aNlshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shrPtr = lframe
- shrp = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __alshr :
- (*%E *)
- (*%E *)
- public __aFNalshr:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shrPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrp]
- call far __aFlshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshr
- extrn __aNlshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shrPtr = sframe
- shrp = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __alshr :
- (*%E *)
- (*%E *)
- public __aNFalshr:
- push bp
- mov bp, sp
- les bx, ss:[bp][shrPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrp]
- call __aNlshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFlshr
- extrn __aNlshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shrPtr = lframe
- shrp = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __alshr :
- (*%E *)
- (*%E *)
- public __aFFalshr:
- push bp
- mov bp, sp
- les bx, ss:[bp][shrPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrp]
- call far __aFlshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%T NearCall *)
- public __lshr:
- (*%E *)
- public __aNlshr:
- sub ch,ch
- jcxz local2
- local1:
- shr dx,1
- rcr ax,1
- loop local1
- local2:
- ret 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%F NearCall *)
- public __lshr:
- (*%E *)
- public __aFlshr:
- sub ch,ch
- jcxz local2
- local1:
- shr dx,1
- rcr ax,1
- loop local1
- local2:
- ret far 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFuldiv
- extrn __aNuldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- divPtr = sframe
- divisor = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __auldiv :
- (*%E *)
- (*%E *)
- public __aNNauldiv:
- push bp
- mov bp, sp
- mov bx, ss:[bp][divPtr]
- push ds
- pop es
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call __aNuldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFuldiv
- extrn __aNuldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- divPtr = lframe
- divisor = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __auldiv :
- (*%E *)
- (*%E *)
- public __aFNauldiv:
- push bp
- mov bp, sp
- mov bx, ss:[bp][divPtr]
- push ds
- pop es
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFuldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFuldiv
- extrn __aNuldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- divPtr = sframe
- divisor = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __auldiv :
- (*%E *)
- (*%E *)
- public __aNFauldiv:
- push bp
- mov bp, sp
- les bx, ss:[bp][divPtr]
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call __aNuldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFuldiv
- extrn __aNuldiv
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- divPtr = lframe
- divisor = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __auldiv :
- (*%E *)
- (*%E *)
- public __aFFauldiv:
- push bp
- mov bp, sp
- les bx, ss:[bp][divPtr]
- push [bp][divisor][2]
- push [bp][divisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFuldiv
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- usW1 = sframe
- usW2 = 2+sframe
- uvW1 = 4+sframe
- uvW2 = 6+sframe
- (*%T NearCall *)
- public __uldiv:
- (*%E *)
- public __aNuldiv:
- push bp
- mov bp,sp
- push bx
- push di
- mov ax, [bp][uvW2]
- or ax, ax
- jne local1
- mov cx, [bp][uvW1]
- mov ax, [bp][usW2]
- sub dx, dx
- div cx
- mov bx, ax
- mov ax, [bp][usW1]
- div cx
- mov dx, bx
- jmp local5
- local1:
- mov cx, ax
- mov bx, [bp][uvW1]
- mov dx, [bp][usW2]
- mov ax, [bp][usW1]
- local2:
- shr cx, 1
- rcr bx, 1
- shr dx, 1
- rcr ax, 1
- or cx, cx
- jne local2
- div bx
- mov di, ax
- mul word [bp][uvW2]
- xchg ax, cx
- mov ax, [bp][uvW1]
- mul di
- add dx, cx
- jb local3
- cmp dx, [bp][usW2]
- ja local3
- jb local4
- cmp ax, [bp][usW1]
- jbe local4
- local3:
- dec di
- local4:
- sub dx, dx
- xchg ax, di
- local5:
- pop di
- pop bx
- mov sp,bp
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- usW1 = lframe
- usW2 = 2+lframe
- uvW1 = 4+lframe
- uvW2 = 6+lframe
- (*%F NearCall *)
- public __uldiv:
- (*%E *)
- public __aFuldiv:
- push bp
- mov bp,sp
- push bx
- push di
- mov ax, [bp][uvW2]
- or ax, ax
- jne local1
- mov cx, [bp][uvW1]
- mov ax, [bp][usW2]
- sub dx, dx
- div cx
- mov bx, ax
- mov ax, [bp][usW1]
- div cx
- mov dx, bx
- jmp local5
- local1:
- mov cx, ax
- mov bx, [bp][uvW1]
- mov dx, [bp][usW2]
- mov ax, [bp][usW1]
- local2:
- shr cx, 1
- rcr bx, 1
- shr dx, 1
- rcr ax, 1
- or cx, cx
- jne local2
- div bx
- mov di, ax
- mul word [bp][uvW2]
- xchg ax, cx
- mov ax, [bp][uvW1]
- mul di
- add dx, cx
- jb local3
- cmp dx, [bp][usW2]
- ja local3
- jb local4
- cmp ax, [bp][usW1]
- jbe local4
- local3:
- dec di
- local4:
- sub dx, dx
- xchg ax, di
- local5:
- pop di
- pop bx
- mov sp,bp
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulrem
- extrn __aNulrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- remPtr = sframe
- remisor = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __aulrem :
- (*%E *)
- (*%E *)
- public __aNNaulrem:
- push bp
- mov bp, sp
- mov bx, ss:[bp][remPtr]
- push ds
- pop es
- push [bp][remisor][2]
- push [bp][remisor]
- push es:[bx][2]
- push es:[bx]
- call __aNulrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulrem
- extrn __aNulrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- remPtr = lframe
- remisor = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __aulrem :
- (*%E *)
- (*%E *)
- public __aFNaulrem:
- push bp
- mov bp, sp
- mov bx, ss:[bp][remPtr]
- push ds
- pop es
- push [bp][remisor][2]
- push [bp][remisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFulrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulrem
- extrn __aNulrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- remPtr = sframe
- remisor = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __aulrem :
- (*%E *)
- (*%E *)
- public __aNFaulrem:
- push bp
- mov bp, sp
- les bx, ss:[bp][remPtr]
- push [bp][remisor][2]
- push [bp][remisor]
- push es:[bx][2]
- push es:[bx]
- call __aNulrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulrem
- extrn __aNulrem
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 8
- remPtr = lframe
- remisor = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __aulrem :
- (*%E *)
- (*%E *)
- public __aFFaulrem:
- push bp
- mov bp, sp
- les bx, ss:[bp][remPtr]
- push [bp][remisor][2]
- push [bp][remisor]
- push es:[bx][2]
- push es:[bx]
- call far __aFulrem
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- usW1 = sframe
- usW2 = 2+sframe
- uvW1 = 4+sframe
- uvW2 = 6+sframe
- (*%T NearCall *)
- public __ulrem :
- (*%E *)
- public __aNulrem :
- push bp
- mov bp, sp
- push bx
- mov ax, [bp][uvW2]
- or ax, ax
- jne local1
- mov cx, [bp][uvW1]
- mov ax, [bp][usW2]
- sub dx, dx
- div cx
- mov ax, [bp][usW1]
- div cx
- mov ax, dx
- sub dx, dx
- jmp local5
- local1:
- mov cx, ax
- mov bx, [bp][uvW1]
- mov dx, [bp][usW2]
- mov ax, [bp][usW1]
- local2:
- shr cx,1
- rcr bx,1
- shr dx,1
- rcr ax, 1
- or cx, cx
- jne local2
- div bx
- mov cx, ax
- mul word [bp][uvW2]
- xchg ax, cx
- mul word [bp][uvW1]
- add dx, cx
- jb local3
- cmp dx, [bp][usW2]
- ja local3
- jb local4
- cmp ax, [bp][usW1]
- jbe local4
- local3:
- sub ax, [bp][uvW1]
- sbb dx, [bp][uvW2]
- local4:
- sub ax, [bp][usW1]
- sbb dx, [bp][usW2]
- neg dx
- neg ax
- sbb dx, 0
- local5:
- pop bx
- mov sp,bp
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- usW1 = lframe
- usW2 = 2+lframe
- uvW1 = 4+lframe
- uvW2 = 6+lframe
- (*%F NearCall *)
- public __ulrem :
- (*%E *)
- public __aFulrem :
- push bp
- mov bp, sp
- push bx
- mov ax, [bp][uvW2]
- or ax, ax
- jne local1
- mov cx, [bp][uvW1]
- mov ax, [bp][usW2]
- sub dx, dx
- div cx
- mov ax, [bp][usW1]
- div cx
- mov ax, dx
- sub dx, dx
- jmp local5
- local1:
- mov cx, ax
- mov bx, [bp][uvW1]
- mov dx, [bp][usW2]
- mov ax, [bp][usW1]
- local2:
- shr cx,1
- rcr bx,1
- shr dx,1
- rcr ax, 1
- or cx, cx
- jne local2
- div bx
- mov cx, ax
- mul word [bp][uvW2]
- xchg ax, cx
- mul word [bp][uvW1]
- add dx, cx
- jb local3
- cmp dx, [bp][usW2]
- ja local3
- jb local4
- cmp ax, [bp][usW1]
- jbe local4
- local3:
- sub ax, [bp][uvW1]
- sbb dx, [bp][uvW2]
- local4:
- sub ax, [bp][usW1]
- sbb dx, [bp][usW2]
- neg dx
- neg ax
- sbb dx, 0
- local5:
- pop bx
- mov sp,bp
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulshr
- extrn __aNulshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shrPtr = sframe
- shrisor = 2+sframe
- (*%T NearPtr *)
- (*%T NearCall *)
- public __aulshr :
- (*%E *)
- (*%E *)
- public __aNNaulshr:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shrPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrisor]
- call __aNulshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulshr
- extrn __aNulshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 4
- shrPtr = lframe
- shrisor = 2+lframe
- (*%T NearPtr *)
- (*%F NearCall *)
- public __aulshr :
- (*%E *)
- (*%E *)
- public __aFNaulshr:
- push bp
- mov bp, sp
- mov bx, ss:[bp][shrPtr]
- push ds
- pop es
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrisor]
- call far __aFulshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulshr
- extrn __aNulshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shrPtr = sframe
- shrisor = 4+sframe
- (*%F NearPtr *)
- (*%T NearCall *)
- public __aulshr :
- (*%E *)
- (*%E *)
- public __aNFaulshr:
- push bp
- mov bp, sp
- les bx, ss:[bp][shrPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrisor]
- call __aNulshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __aFulshr
- extrn __aNulshr
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- RetSize = 6
- shrPtr = lframe
- shrisor = 4+lframe
- (*%F NearPtr *)
- (*%F NearCall *)
- public __aulshr :
- (*%E *)
- (*%E *)
- public __aFFaulshr:
- push bp
- mov bp, sp
- les bx, ss:[bp][shrPtr]
- mov ax, es:[bx]
- mov dx, es:[bx][2]
- mov cx, [bp][shrisor]
- call far __aFulshr
- mov es:[bx][2], dx
- mov es:[bx], ax
- pop bp
- ret far RetSize
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%T NearCall *)
- public __ulshr:
- (*%E *)
- public __aNulshr:
- sub ch,ch
- jcxz local2
- local1:
- shr dx,1
- rcr ax,1
- loop local1
- local2:
- ret 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%F NearCall *)
- public __ulshr:
- (*%E *)
- public __aFulshr:
- sub ch,ch
- jcxz local2
- local1:
- shr dx,1
- rcr ax,1
- loop local1
- local2:
- ret far 0
- (**************************************************************************)
- section
- segment _DATA(DATA,28H)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- (*%F _WINDOWS *)
- select _DATA
- public __AHSHIFT : dw 12
- public __AHINCR : dw 1000H
- (*%E *)
- (*%T _WINDOWS *)
- select _DATA
- extrn __AHSHIFT
- extrn __AHINCR
- (*%E *)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- ptr1 = sframe
- ptr2 = 4+sframe
- (*%T NearCall *)
- public __hdiff:
- (*%E *)
- public __aNahdiff:
- push bp
- mov bp, sp
- push ds
- (*%T _WINDOWS *)
- mov ax, ss
- (*%E *)
- (*%F _WINDOWS *)
- mov ax, _DATA
- (*%E *)
- mov ds, ax
- mov ax, [bp][ptr1]
- mov dx, [bp][ptr1][2]
- mov bx, [bp][ptr2][2]
- mov cx, [__AHSHIFT]
- shr dx, cl
- shr bx, cl
- sub ax, [bp][ptr2]
- sbb dx, bx
- pop ds
- pop bp
- ret 8
- (**************************************************************************)
- section
- segment _DATA(DATA,28H)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn __AHSHIFT
- extrn __AHINCR
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- ptr1 = lframe
- ptr2 = 4+lframe
- (*%F NearCall *)
- public __hdiff:
- (*%E *)
- public __aFahdiff:
- push bp
- mov bp, sp
- push ds
- (*%T _WINDOWS *)
- mov ax, ss
- (*%E *)
- (*%F _WINDOWS *)
- mov ax, _DATA
- (*%E *)
- mov ds, ax
- mov ax, [bp][ptr1]
- mov dx, [bp][ptr1][2]
- mov bx, [bp][ptr2][2]
- mov cx, [__AHSHIFT]
- shr dx, cl
- shr bx, cl
- sub ax, [bp][ptr2]
- sbb dx, bx
- pop ds
- pop bp
- ret far 8
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __aNlrrot:
- and cx, 01FH
- jcxz local2
- push bx
- local1:
- mov bx, dx
- shr bx, 1
- rcr ax, 1
- rcr dx, 1
- loop local1
- pop bx
- local2:
- ret 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __aFlrrot:
- and cx, 01FH
- jcxz local2
- push bx
- local1:
- mov bx, dx
- shr bx, 1
- rcr ax, 1
- rcr dx, 1
- loop local1
- pop bx
- local2:
- ret far 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __aNllrot:
- and cx, 1FH
- jcxz local2
- local1:
- shl ax, 1
- rcl dx, 1
- adc ax, 0
- loop local1
- local2:
- ret 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __aFllrot:
- and cx, 1FH
- jcxz local2
- local1:
- shl ax, 1
- rcl dx, 1
- adc ax, 0
- loop local1
- local2:
- ret far 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- old_cw = -2
- new_cw = -4
- long_value = -12
- locals = 12
- public __ftol :
- push bp
- mov bp, sp
- sub sp, locals
- push bx
- push cx
- push si
- push di
- fstcw [bp][old_cw]
- fwait
- mov ax, [bp][old_cw]
- or ah, 0CH
- mov [bp][new_cw], ax
- fldcw [bp][new_cw]
- fistp qword [bp][long_value], st(0)
- fldcw [bp][old_cw]
- mov ax, [bp][long_value]
- mov dx, [bp][long_value][2]
- pop di
- pop si
- pop cx
- pop bx
- mov sp, bp
- pop bp
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fadd :
- faddp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fmul:
- fmulp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fsub :
- fsubp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fsubr :
- fsubrp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fdiv :
- fdivp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fdivr :
- fdivrp st(1), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fdup :
- fld st(0), st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fchs :
- fchs st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fldd:
- fld qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fstdp :
- fstp qword [bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fstd :
- fst qword [bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __faddd :
- fadd qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fmuld :
- fmul qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fsubd :
- fsub qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fsubdr :
- fsubr qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fdivd :
- fdiv qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fdivdr :
- fdivr qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fldw :
- fild word st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fldl :
- fild dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- public __fldq :
- fild qword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- (****************************************************************************)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __slds :
- push ss
- pop es
- public __elds :
- fld dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sstsp :
- push ss
- pop es
- public __estsp :
- fstp dword es:[bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __ssts :
- push ss
- pop es
- public __ests :
- fst dword es:[bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sadds :
- push ss
- pop es
- public __eadds :
- fadd dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __smuls :
- push ss
- pop es
- public __emuls :
- fmul dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __ssubs :
- push ss
- pop es
- public __esubs :
- fsub dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __ssubsr :
- push ss
- pop es
- public __esubsr :
- fsubr dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sdivs :
- push ss
- pop es
- public __edivs :
- fdiv dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sdivsr :
- push ss
- pop es
- public __edivsr :
- fdivr dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sldd :
- push ss
- pop es
- public __eldd :
- fld qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sstdp :
- push ss
- pop es
- public __estdp :
- fstp qword es:[bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sstd :
- push ss
- pop es
- public __estd :
- fst qword es:[bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __saddd :
- push ss
- pop es
- public __eaddd :
- fadd qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __smuld :
- push ss
- pop es
- public __emuld :
- fmul qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __ssubd :
- push ss
- pop es
- public __esubd :
- fsub qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __ssubdr :
- push ss
- pop es
- public __esubdr :
- fsubr qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sdivd :
- push ss
- pop es
- public __edivd :
- fdiv qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sdivdr :
- push ss
- pop es
- public __edivdr :
- fdivr qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sldw :
- push ss
- pop es
- public __eldw :
- fild word st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sldl :
- push ss
- pop es
- public __eldl :
- fild dword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __sldq :
- push ss
- pop es
- public __eldq :
- fild qword st(0), es:[bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __flds :
- fld dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fstsp :
- fstp dword [bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fsts :
- fst dword [bx], st(0)
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fadds :
- fadd dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fmuls :
- fmul dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fsubs :
- fsub dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fsubsr :
- fsubr dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fdivs :
- fdiv dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __fdivsr :
- fdivr dword st(0), [bx]
- fwait
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- public __dcvt :
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- segment _DATA(DATA, 28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public DGROUP@ : dw _DATA
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn _malloc
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public __graphgetmem :
- push bp
- mov bp, sp
- (*%F RegParam *)
- push [bp][6]
- (*%E *)
- (*%T RegParam *)
- mov ax, [bp][6]
- (*%E *)
- (*%F NearCall *)
- call far _malloc
- (*%E *)
- (*%T NearCall *)
- call _malloc
- (*%E *)
- (*%F RegParam *)
- pop cx
- (*%E *)
- (*%T NearPtr *)
- mov dx, ds
- (*%E *)
- pop bp
- ret far 0
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn _free
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public __graphfreemem :
- push bp
- mov bp, sp
- (*%F RegParam *)
- (*%F NearPtr *)
- push [bp][8]
- push [bp][6]
- (*%E *)
- (*%T NearPtr *)
- push [bp][6]
- (*%E *)
- (*%E *)
- (*%T RegParam *)
- (*%F NearPtr *)
- mov bx, [bp][8]
- mov ax, [bp][6]
- (*%E *)
- (*%T NearPtr *)
- mov ax, [bp][6]
- (*%E *)
- (*%E *)
- (*%F NearCall *)
- call far _free
- (*%E *)
- (*%T NearCall *)
- call _free
- (*%E *)
- (*%F RegParam *)
- (*%F NearPtr *)
- add sp, 4
- (*%E *)
- (*%T NearPtr *)
- add sp, 2
- (*%E *)
- (*%E *)
- pop bp
- ret far 0
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- extrn _exit
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public __graphexit :
- push bp
- mov bp, sp
- (*%F RegParam *)
- push [bp][6]
- (*%E *)
- (*%T RegParam *)
- mov ax, [bp][6]
- (*%E *)
- (*%F NearCall *)
- call far _exit
- (*%E *)
- (*%T NearCall *)
- call _exit
- (*%E *)
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public N_SCOPY@ :
- pop es
- push cs
- push es
- public F_SCOPY@ :
- public SCOPY@ :
- push bp
- mov bp,sp
- push si
- push di
- push ds
- lds si, [bp][6]
- les di, [bp][0AH]
- cld
- shr cx,1
- repe; movsw
- adc cx,cx
- repe; movsb
- pop ds
- pop di
- pop si
- pop bp
- ret far 8
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public N_LXLSH@ :
- pop bx
- push cs
- push bx
- public F_LXLSH@ :
- public LXLSH@ :
- cmp cl, 10H
- jae bigWord
- mov bx, ax
- shl ax, cl
- shl dx, cl
- neg cl
- add cl, 10H
- shr bx, cl
- or dx, bx
- ret far 0
- bigWord:
- sub cl, 10H
- xchg ax, dx
- xor ax, ax
- shl dx, cl
- ret far 0
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public N_LXRSH@ :
- pop bx
- push cs
- push bx
- public F_LXRSH@ :
- public LXRSH@ :
- cmp cl, 10H
- jae bigWord
- mov bx, dx
- shr ax, cl
- sar dx, cl
- neg cl
- add cl, 10H
- shl bx, cl
- or ax, bx
- ret far 0
- bigWord:
- sub cl, 10H
- xchg ax, dx
- cwd
- sar ax, cl
- ret far 0
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public F_LXMUL@ :
- public LXMUL@ :
- push si
- xchg ax, si
- xchg ax, dx
- test ax, ax
- je L1
- mul bx
- L1:
- jcxz L2
- xchg ax, cx
- mul si
- add ax, cx
- L2:
- xchg ax, si
- mul bx
- add dx, si
- pop si
- ret far 0
- (****************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
- select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
- public N_LDIV@ :
- pop cx
- push cs
- push cx
- public F_LDIV@ :
- public LDIV@ :
- sub cx, cx
- jmp L1
- public N_LUDIV@ :
- pop cx
- push cs
- push cx
- public F_LUDIV@ :
- public LUDIV@ :
- mov cx, 1
- jmp L1
- public N_LMOD@ :
- pop cx
- push cs
- push cx
- public F_LMOD@ :
- public LMOD@ :
- mov cx, 2
- jmp L1
- public N_LUMOD@ :
- pop cx
- push cs
- push cx
- public F_LUMOD@ :
- public LUMOD@ :
- mov cx, 3
- L1:
- push bp
- push si
- push di
- mov bp, sp
- mov di, cx
- mov ax, [bp][0AH]
- mov dx, [bp][0CH]
- mov bx, [bp][0EH]
- mov cx, [bp][10H]
- or cx, cx
- jne L2
- or dx, dx
- je L10
- or bx, bx
- je L10
- L2:
- test di, 1
- jne L4
- or dx, dx
- jns L3
- neg dx
- neg ax
- sbb dx, 0
- or di, 0CH
- L3:
- or cx, cx
- jns L4
- neg cx
- neg bx
- sbb cx, 0
- xor di, 4
- L4:
- mov bp, cx
- mov cx, 20H
- push di
- xor di, di
- xor si, si
- L5:
- shl ax, 1
- rcl dx, 1
- rcl si, 1
- rcl di, 1
- cmp di, bp
- jb L7
- ja L6
- cmp si, bx
- jb L7
- L6:
- sub si, bx
- sbb di, bp
- inc ax
- L7:
- loop L5
- pop bx
- test bx, 2
- je L8
- mov ax, si
- mov dx, di
- shr bx, 1
- L8:
- test bx, 4
- je L9
- neg dx
- neg ax
- sbb dx, 0
- L9:
- pop di
- pop si
- pop bp
- ret far 8
- L10:
- div bx
- test di, 2
- je L11
- xchg ax, dx
- L11:
- xor dx, dx
- jmp L9
- (**************************************************************************)
- segment _BSS(BSS, 48H)
- public FLAGS8087@ :
- org 2
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public FTOL@ :
- public F_FTOL@ :
- CW = -2
- lnum = -6
- locals = 6
- push bp
- mov bp, sp
- sub sp, locals
- fstcw [bp][CW]
- fwait
- mov ax, [bp][CW]
- or word [bp][CW], 0C00H
- fwait
- fldcw [bp][CW]
- fistp dword [bp][lnum], st(0)
- mov [bp][CW], ax
- fldcw [bp][CW]
- mov ax, [bp][lnum]
- mov dx, [bp][lnum][2]
- mov sp, bp
- pop bp
- ret far 0
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public __fcmp:
- push bp
- mov bp,sp
- sub sp,2
- fxch st(0),st(1)
- fcompp st(0),st(1)
- fstsw [bp][-2]
- fwait
- mov ah,[bp][-1]
- and ax,4100H
- shr ax,1
- shl ah,1
- or ah,al
- sahf
- mov sp,bp
- pop bp
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- (**************************************************************************)
- section
- segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
- public __fcompp :
- push bp
- mov bp,sp
- sub sp,2
- push ax
- fcompp st(0),st(1)
- fstsw [bp][-2]
- fwait
- mov ah,[bp][-1]
- sahf
- pop ax
- mov sp,bp
- pop bp
- (*%F NearCall *)
- ret far 0
- (*%E *)
- (*%T NearCall *)
- ret 0
- (*%E *)
- end
|