3RDPARTY.A 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * 3RDPARTY.A - Support for other compiler's runtime libraries *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. include "corelib.inc"
  11. module ThirdParty
  12. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  13. segment _DATA(DATA, 28H)
  14. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  15. extrn __FatalError
  16. extrn __stk_base
  17. CSVar = 2
  18. IPVar = 0
  19. public __chkstk:
  20. (*%F NearCall *)
  21. pop cx
  22. (*%E *)
  23. pop dx
  24. mov bx,sp
  25. sub bx,ax
  26. jb stackError
  27. cmp bx, [__stk_base]
  28. jb stackError
  29. mov sp,bx
  30. push dx
  31. (*%F NearCall *)
  32. push cx
  33. (*%E *)
  34. (*%F NearCall *)
  35. ret far 0
  36. (*%E *)
  37. (*%T NearCall *)
  38. ret 0
  39. (*%E *)
  40. stackError:
  41. mov bx, sp
  42. mov ax, 1
  43. push ax
  44. push ss:[bx][IPVar]
  45. (*%T NearCall*) push cs (*%E*)
  46. (*%F NearCall*) push ss:[bx][CSVar] (*%E*)
  47. call far __FatalError
  48. (**************************************************************************)
  49. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  50. public _setjmp :
  51. extrn __setjmp
  52. jmp far __setjmp
  53. (**************************************************************************)
  54. section
  55. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  56. extrn __aNldiv
  57. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  58. RetSize = 6
  59. divPtr = sframe
  60. divisor = 2+sframe
  61. (*%T NearCall *)
  62. (*%T NearPtr *)
  63. public __aldiv :
  64. (*%E *)
  65. (*%E *)
  66. public __aNNaldiv:
  67. push bp
  68. mov bp, sp
  69. mov bx, ss:[bp][divPtr]
  70. push ds
  71. pop es
  72. push [bp][divisor][2]
  73. push [bp][divisor]
  74. push es:[bx][2]
  75. push es:[bx]
  76. call __aNldiv
  77. mov es:[bx][2], dx
  78. mov es:[bx], ax
  79. pop bp
  80. ret RetSize
  81. (**************************************************************************)
  82. section
  83. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  84. extrn __aNldiv
  85. extrn __aFldiv
  86. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  87. RetSize = 6
  88. divPtr = lframe
  89. divisor = 2+lframe
  90. (*%T NearPtr *)
  91. (*%F NearCall *)
  92. public __aldiv :
  93. (*%E *)
  94. (*%E *)
  95. public __aFNaldiv:
  96. push bp
  97. mov bp, sp
  98. mov bx, ss:[bp][divPtr]
  99. push ds
  100. pop es
  101. push [bp][divisor][2]
  102. push [bp][divisor]
  103. push es:[bx][2]
  104. push es:[bx]
  105. call far __aFldiv
  106. mov es:[bx][2], dx
  107. mov es:[bx], ax
  108. pop bp
  109. ret far RetSize
  110. (**************************************************************************)
  111. section
  112. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  113. extrn __aNldiv
  114. extrn __aFldiv
  115. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  116. RetSize = 8
  117. divPtr = sframe
  118. divisor = 4+sframe
  119. (*%F NearPtr *)
  120. (*%T NearCall *)
  121. public __aldiv :
  122. (*%E *)
  123. (*%E *)
  124. public __aNFaldiv:
  125. push bp
  126. mov bp, sp
  127. les bx, ss:[bp][divPtr]
  128. push [bp][divisor][2]
  129. push [bp][divisor]
  130. push es:[bx][2]
  131. push es:[bx]
  132. call __aNldiv
  133. mov es:[bx][2], dx
  134. mov es:[bx], ax
  135. pop bp
  136. ret RetSize
  137. (**************************************************************************)
  138. section
  139. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  140. extrn __aNldiv
  141. extrn __aFldiv
  142. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  143. RetSize = 8
  144. divPtr = lframe
  145. divisor = 4+lframe
  146. (*%F NearPtr *)
  147. (*%F NearCall *)
  148. public __aldiv :
  149. (*%E *)
  150. (*%E *)
  151. public __aFFaldiv:
  152. push bp
  153. mov bp, sp
  154. les bx, ss:[bp][divPtr]
  155. push [bp][divisor][2]
  156. push [bp][divisor]
  157. push es:[bx][2]
  158. push es:[bx]
  159. call far __aFldiv
  160. mov es:[bx][2], dx
  161. mov es:[bx], ax
  162. pop bp
  163. ret far RetSize
  164. (**************************************************************************)
  165. section
  166. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  167. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  168. dsW1 = sframe
  169. dsW2 = 2+sframe
  170. dvW1 = 4+sframe
  171. dvW2 = 6+sframe
  172. (*%T NearCall *)
  173. public __ldiv :
  174. (*%E *)
  175. public __aNldiv :
  176. push bp
  177. mov bp, sp
  178. push bx
  179. push di
  180. push si
  181. sub di, di
  182. mov ax, [bp][dsW2]
  183. or ax, ax
  184. jge local1
  185. inc di
  186. mov dx, [bp][dsW1]
  187. neg ax
  188. neg dx
  189. sbb ax, 0
  190. mov [bp][dsW2], ax
  191. mov [bp][dsW1], dx
  192. local1:
  193. mov ax, [bp][dvW2]
  194. or ax, ax
  195. jge local2
  196. inc di
  197. mov dx, [bp][dvW1]
  198. neg ax
  199. neg dx
  200. sbb ax, 0
  201. mov [bp][dvW2], ax
  202. mov [bp][dvW1], dx
  203. local2:
  204. or ax, ax
  205. jne local3
  206. mov cx, [bp][dvW1]
  207. mov ax, [bp][dsW2]
  208. sub dx, dx
  209. div cx
  210. mov bx, ax
  211. mov ax, [bp][dsW1]
  212. div cx
  213. mov dx, bx
  214. jmp local7
  215. local3:
  216. mov bx, ax
  217. mov cx, [bp][dvW1]
  218. mov dx, [bp][dsW2]
  219. mov ax, [bp][dsW1]
  220. local4:
  221. shr bx, 1
  222. rcr cx, 1
  223. shr dx, 1
  224. rcr ax, 1
  225. or bx, bx
  226. jne local4
  227. div cx
  228. mov si, ax
  229. mul word [bp][dvW2]
  230. xchg ax, cx
  231. mov ax, [bp][dvW1]
  232. mul si
  233. add dx, cx
  234. jb local5
  235. cmp dx, [bp][dsW2]
  236. ja local5
  237. jb local6
  238. cmp ax, [bp][dsW1]
  239. jbe local6
  240. local5:
  241. dec si
  242. local6:
  243. sub dx, dx
  244. xchg ax, si
  245. local7:
  246. dec di
  247. jne local8
  248. neg dx
  249. neg ax
  250. sbb dx, 0
  251. local8:
  252. pop si
  253. pop di
  254. pop bx
  255. pop bp
  256. ret 8
  257. (**************************************************************************)
  258. section
  259. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  260. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  261. dsW1 = lframe
  262. dsW2 = 2+lframe
  263. dvW1 = 4+lframe
  264. dvW2 = 6+lframe
  265. (*%F NearCall *)
  266. public __ldiv :
  267. (*%E *)
  268. public __aFldiv :
  269. push bp
  270. mov bp, sp
  271. push bx
  272. push di
  273. push si
  274. sub di, di
  275. mov ax, [bp][dsW2]
  276. or ax, ax
  277. jge local1
  278. inc di
  279. mov dx, [bp][dsW1]
  280. neg ax
  281. neg dx
  282. sbb ax, 0
  283. mov [bp][dsW2], ax
  284. mov [bp][dsW1], dx
  285. local1:
  286. mov ax, [bp][dvW2]
  287. or ax, ax
  288. jge local2
  289. inc di
  290. mov dx, [bp][dvW1]
  291. neg ax
  292. neg dx
  293. sbb ax, 0
  294. mov [bp][dvW2], ax
  295. mov [bp][dvW1], dx
  296. local2:
  297. or ax, ax
  298. jne local3
  299. mov cx, [bp][dvW1]
  300. mov ax, [bp][dsW2]
  301. sub dx, dx
  302. div cx
  303. mov bx, ax
  304. mov ax, [bp][dsW1]
  305. div cx
  306. mov dx, bx
  307. jmp local7
  308. local3:
  309. mov bx, ax
  310. mov cx, [bp][dvW1]
  311. mov dx, [bp][dsW2]
  312. mov ax, [bp][dsW1]
  313. local4:
  314. shr bx, 1
  315. rcr cx, 1
  316. shr dx, 1
  317. rcr ax, 1
  318. or bx, bx
  319. jne local4
  320. div cx
  321. mov si, ax
  322. mul word [bp][dvW2]
  323. xchg ax, cx
  324. mov ax, [bp][dvW1]
  325. mul si
  326. add dx, cx
  327. jb local5
  328. cmp dx, [bp][dsW2]
  329. ja local5
  330. jb local6
  331. cmp ax, [bp][dsW1]
  332. jbe local6
  333. local5:
  334. dec si
  335. local6:
  336. sub dx, dx
  337. xchg ax, si
  338. local7:
  339. dec di
  340. jne local8
  341. neg dx
  342. neg ax
  343. sbb dx, 0
  344. local8:
  345. pop si
  346. pop di
  347. pop bx
  348. pop bp
  349. ret far 8
  350. (**************************************************************************)
  351. section
  352. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  353. extrn __aFlmul
  354. extrn __aNlmul
  355. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  356. RetSize = 6
  357. mulPtr = sframe
  358. mulp = 2+sframe
  359. (*%T NearPtr *)
  360. (*%T NearCall *)
  361. public __almul :
  362. public __ulmul :
  363. (*%E *)
  364. (*%E *)
  365. public __aNNaulmul:
  366. public __aNNalmul:
  367. push bp
  368. mov bp, sp
  369. mov bx, ss:[bp][mulPtr]
  370. push ds
  371. pop es
  372. push [bp][mulp][2]
  373. push [bp][mulp]
  374. push es:[bx][2]
  375. push es:[bx]
  376. call __aNlmul
  377. mov es:[bx][2], dx
  378. mov es:[bx], ax
  379. pop bp
  380. ret RetSize
  381. (**************************************************************************)
  382. section
  383. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  384. extrn __aFlmul
  385. extrn __aNlmul
  386. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  387. RetSize = 6
  388. mulPtr = lframe
  389. mulp = 2+lframe
  390. (*%T NearPtr *)
  391. (*%F NearCall *)
  392. public __almul :
  393. public __ulmul :
  394. (*%E *)
  395. (*%E *)
  396. public __aFNaulmul:
  397. public __aFNalmul:
  398. push bp
  399. mov bp, sp
  400. mov bx, ss:[bp][mulPtr]
  401. push ds
  402. pop es
  403. push [bp][mulp][2]
  404. push [bp][mulp]
  405. push es:[bx][2]
  406. push es:[bx]
  407. call far __aFlmul
  408. mov es:[bx][2], dx
  409. mov es:[bx], ax
  410. pop bp
  411. ret far RetSize
  412. (**************************************************************************)
  413. section
  414. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  415. extrn __aFlmul
  416. extrn __aNlmul
  417. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  418. RetSize = 8
  419. mulPtr = sframe
  420. mulp = 4+sframe
  421. (*%F NearPtr *)
  422. (*%T NearCall *)
  423. public __almul :
  424. public __ulmul :
  425. (*%E *)
  426. (*%E *)
  427. public __aNFaulmul:
  428. public __aNFalmul:
  429. push bp
  430. mov bp, sp
  431. les bx, ss:[bp][mulPtr]
  432. push [bp][mulp][2]
  433. push [bp][mulp]
  434. push es:[bx][2]
  435. push es:[bx]
  436. call __aNlmul
  437. mov es:[bx][2], dx
  438. mov es:[bx], ax
  439. pop bp
  440. ret RetSize
  441. (**************************************************************************)
  442. section
  443. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  444. extrn __aFlmul
  445. extrn __aNlmul
  446. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  447. RetSize = 8
  448. mulPtr = lframe
  449. mulp = 4+lframe
  450. (*%F NearPtr *)
  451. (*%F NearCall *)
  452. public __almul :
  453. public __ulmul :
  454. (*%E *)
  455. (*%E *)
  456. public __aFFaulmul:
  457. public __aFFalmul:
  458. push bp
  459. mov bp, sp
  460. les bx, ss:[bp][mulPtr]
  461. push [bp][mulp][2]
  462. push [bp][mulp]
  463. push es:[bx][2]
  464. push es:[bx]
  465. call far __aFlmul
  466. mov es:[bx][2], dx
  467. mov es:[bx], ax
  468. pop bp
  469. ret far RetSize
  470. (**************************************************************************)
  471. section
  472. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  473. msW1 = lframe
  474. msW2 = 2+lframe
  475. mvW1 = 4+lframe
  476. mvW2 = 6+lframe
  477. (*%F NearCall *)
  478. public __lmul :
  479. (*%E *)
  480. public __aFulmul :
  481. public __aFlmul :
  482. push bp
  483. mov bp, sp
  484. push bx
  485. mov ax, [bp][msW2]
  486. mov bx, [bp][mvW2]
  487. or bx, ax
  488. mov bx, [bp][mvW1]
  489. jne local1
  490. mov ax, [bp][msW1]
  491. mul bx
  492. jmp mulExit
  493. local1:
  494. mul bx
  495. mov cx, ax
  496. mov ax, [bp][msW1]
  497. mul word [bp][mvW2]
  498. add cx, ax
  499. mov ax, [bp][msW1]
  500. mul bx
  501. add dx, cx
  502. mulExit:
  503. pop bx
  504. pop bp
  505. ret far 8
  506. (**************************************************************************)
  507. section
  508. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  509. msW1 = sframe
  510. msW2 = 2+sframe
  511. mvW1 = 4+sframe
  512. mvW2 = 6+sframe
  513. (*%T NearCall *)
  514. public __lmul :
  515. (*%E *)
  516. public __aNulmul :
  517. public __aNlmul :
  518. push bp
  519. mov bp, sp
  520. push bx
  521. mov ax, [bp][msW2]
  522. mov bx, [bp][mvW2]
  523. or bx, ax
  524. mov bx, [bp][mvW1]
  525. jne local1
  526. mov ax, [bp][msW1]
  527. mul bx
  528. jmp mulExit
  529. local1:
  530. mul bx
  531. mov cx, ax
  532. mov ax, [bp][msW1]
  533. mul word [bp][mvW2]
  534. add cx, ax
  535. mov ax, [bp][msW1]
  536. mul bx
  537. add dx, cx
  538. mulExit:
  539. pop bx
  540. pop bp
  541. ret 8
  542. (**************************************************************************)
  543. section
  544. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  545. extrn __aFlrem
  546. extrn __aNlrem
  547. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  548. RetSize = 6
  549. remPtr = sframe
  550. remp = 2+sframe
  551. (*%T NearPtr *)
  552. (*%T NearCall *)
  553. public __alrem :
  554. (*%E *)
  555. (*%E *)
  556. public __aNNalrem:
  557. push bp
  558. mov bp, sp
  559. mov bx, ss:[bp][remPtr]
  560. push ds
  561. pop es
  562. push [bp][remp][2]
  563. push [bp][remp]
  564. push es:[bx][2]
  565. push es:[bx]
  566. call __aNlrem
  567. mov es:[bx][2], dx
  568. mov es:[bx], ax
  569. pop bp
  570. ret RetSize
  571. (**************************************************************************)
  572. section
  573. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  574. extrn __aFlrem
  575. extrn __aNlrem
  576. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  577. RetSize = 6
  578. remPtr = lframe
  579. remp = 2+lframe
  580. (*%T NearPtr *)
  581. (*%F NearCall *)
  582. public __alrem :
  583. (*%E *)
  584. (*%E *)
  585. public __aFNalrem:
  586. push bp
  587. mov bp, sp
  588. mov bx, ss:[bp][remPtr]
  589. push ds
  590. pop es
  591. push [bp][remp][2]
  592. push [bp][remp]
  593. push es:[bx][2]
  594. push es:[bx]
  595. call far __aFlrem
  596. mov es:[bx][2], dx
  597. mov es:[bx], ax
  598. pop bp
  599. ret far RetSize
  600. (**************************************************************************)
  601. section
  602. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  603. extrn __aFlrem
  604. extrn __aNlrem
  605. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  606. RetSize = 8
  607. remPtr = sframe
  608. remp = 4+sframe
  609. (*%F NearPtr *)
  610. (*%T NearCall *)
  611. public __alrem :
  612. (*%E *)
  613. (*%E *)
  614. public __aNFalrem:
  615. push bp
  616. mov bp, sp
  617. les bx, ss:[bp][remPtr]
  618. push [bp][remp][2]
  619. push [bp][remp]
  620. push es:[bx][2]
  621. push es:[bx]
  622. call __aNlrem
  623. mov es:[bx][2], dx
  624. mov es:[bx], ax
  625. pop bp
  626. ret RetSize
  627. (**************************************************************************)
  628. section
  629. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  630. extrn __aFlrem
  631. extrn __aNlrem
  632. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  633. RetSize = 8
  634. remPtr = lframe
  635. remp = 4+lframe
  636. (*%F NearPtr *)
  637. (*%F NearCall *)
  638. public __alrem :
  639. (*%E *)
  640. (*%E *)
  641. public __aFFalrem:
  642. push bp
  643. mov bp, sp
  644. les bx, ss:[bp][remPtr]
  645. push [bp][remp][2]
  646. push [bp][remp]
  647. push es:[bx][2]
  648. push es:[bx]
  649. call far __aFlrem
  650. mov es:[bx][2], dx
  651. mov es:[bx], ax
  652. pop bp
  653. ret far RetSize
  654. (**************************************************************************)
  655. section
  656. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  657. rsW1 = sframe
  658. rsW2 = 2+sframe
  659. rvW1 = 4+sframe
  660. rvW2 = 6+sframe
  661. (*%T NearCall *)
  662. public __lrem:
  663. (*%E *)
  664. public __aNlrem:
  665. push bp
  666. mov bp, sp
  667. push bx
  668. push di
  669. sub di, di
  670. mov ax, [bp][rsW2]
  671. or ax, ax
  672. jge local1
  673. inc di
  674. mov dx, [bp][rsW1]
  675. neg ax
  676. neg dx
  677. sbb ax, 0
  678. mov [bp][rsW2], ax
  679. mov [bp][rsW1], dx
  680. local1:
  681. mov ax, [bp][rvW2]
  682. or ax, ax
  683. jge local2
  684. mov dx, [bp][rvW1]
  685. neg ax
  686. neg dx
  687. sbb ax, 0
  688. mov [bp][rvW2], ax
  689. mov [bp][rvW1], dx
  690. local2:
  691. or ax, ax
  692. jne local3
  693. mov cx, [bp][rvW1]
  694. mov ax, [bp][rsW2]
  695. sub dx, dx
  696. div cx
  697. mov ax, [bp][rsW1]
  698. div cx
  699. mov ax, dx
  700. sub dx, dx
  701. dec di
  702. jns local7
  703. jmp local8
  704. local3:
  705. mov bx, ax
  706. mov cx, [bp][rvW1]
  707. mov dx, [bp][rsW2]
  708. mov ax, [bp][rsW1]
  709. local4:
  710. shr bx, 1
  711. rcr cx, 1
  712. shr dx, 1
  713. rcr ax, 1
  714. or bx, bx
  715. jne local4
  716. div cx
  717. mov cx, ax
  718. mul word [bp][rvW2]
  719. xchg ax, cx
  720. mul word [bp][rvW1]
  721. add dx, cx
  722. jb local5
  723. cmp dx, [bp][rsW2]
  724. ja local5
  725. jb local6
  726. cmp ax, [bp][rsW1]
  727. jbe local6
  728. local5:
  729. sub ax, [bp][rvW1]
  730. sbb dx, [bp][rvW2]
  731. local6:
  732. sub ax, [bp][rsW1]
  733. sbb dx, [bp][rsW2]
  734. dec di
  735. jns local8
  736. local7:
  737. neg dx
  738. neg ax
  739. sbb dx, 0
  740. local8:
  741. pop di
  742. pop bx
  743. pop bp
  744. ret 8
  745. (**************************************************************************)
  746. section
  747. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  748. rsW1 = lframe
  749. rsW2 = 2+lframe
  750. rvW1 = 4+lframe
  751. rvW2 = 6+lframe
  752. (*%F NearCall *)
  753. public __lrem:
  754. (*%E *)
  755. public __aFlrem:
  756. push bp
  757. mov bp, sp
  758. push bx
  759. push di
  760. sub di, di
  761. mov ax, [bp][rsW2]
  762. or ax, ax
  763. jge local1
  764. inc di
  765. mov dx, [bp][rsW1]
  766. neg ax
  767. neg dx
  768. sbb ax, 0
  769. mov [bp][rsW2], ax
  770. mov [bp][rsW1], dx
  771. local1:
  772. mov ax, [bp][rvW2]
  773. or ax, ax
  774. jge local2
  775. mov dx, [bp][rvW1]
  776. neg ax
  777. neg dx
  778. sbb ax, 0
  779. mov [bp][rvW2], ax
  780. mov [bp][rvW1], dx
  781. local2:
  782. or ax, ax
  783. jne local3
  784. mov cx, [bp][rvW1]
  785. mov ax, [bp][rsW2]
  786. sub dx, dx
  787. div cx
  788. mov ax, [bp][rsW1]
  789. div cx
  790. mov ax, dx
  791. sub dx, dx
  792. dec di
  793. jns local7
  794. jmp local8
  795. local3:
  796. mov bx, ax
  797. mov cx, [bp][rvW1]
  798. mov dx, [bp][rsW2]
  799. mov ax, [bp][rsW1]
  800. local4:
  801. shr bx, 1
  802. rcr cx, 1
  803. shr dx, 1
  804. rcr ax, 1
  805. or bx, bx
  806. jne local4
  807. div cx
  808. mov cx, ax
  809. mul word [bp][rvW2]
  810. xchg ax, cx
  811. mul word [bp][rvW1]
  812. add dx, cx
  813. jb local5
  814. cmp dx, [bp][rsW2]
  815. ja local5
  816. jb local6
  817. cmp ax, [bp][rsW1]
  818. jbe local6
  819. local5:
  820. sub ax, [bp][rvW1]
  821. sbb dx, [bp][rvW2]
  822. local6:
  823. sub ax, [bp][rsW1]
  824. sbb dx, [bp][rsW2]
  825. dec di
  826. jns local8
  827. local7:
  828. neg dx
  829. neg ax
  830. sbb dx, 0
  831. local8:
  832. pop di
  833. pop bx
  834. pop bp
  835. ret far 8
  836. (**************************************************************************)
  837. section
  838. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  839. extrn __aFlshl
  840. extrn __aNlshl
  841. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  842. RetSize = 4
  843. shlPtr = sframe
  844. shlp = 2+sframe
  845. (*%T NearPtr *)
  846. (*%T NearCall *)
  847. public __alshl :
  848. (*%E *)
  849. (*%E *)
  850. public __aNNalshl:
  851. push bp
  852. mov bp, sp
  853. mov bx, ss:[bp][shlPtr]
  854. push ds
  855. pop es
  856. mov ax, es:[bx]
  857. mov dx, es:[bx][2]
  858. mov cx, [bp][shlp]
  859. call __aNlshl
  860. mov es:[bx][2], dx
  861. mov es:[bx], ax
  862. pop bp
  863. ret RetSize
  864. (**************************************************************************)
  865. section
  866. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  867. extrn __aFlshl
  868. extrn __aNlshl
  869. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  870. RetSize = 4
  871. shlPtr = lframe
  872. shlp = 2+lframe
  873. (*%T NearPtr *)
  874. (*%F NearCall *)
  875. public __alshl :
  876. (*%E *)
  877. (*%E *)
  878. public __aFNalshl:
  879. push bp
  880. mov bp, sp
  881. mov bx, ss:[bp][shlPtr]
  882. push ds
  883. pop es
  884. mov ax, es:[bx]
  885. mov dx, es:[bx][2]
  886. mov cx, [bp][shlp]
  887. call far __aFlshl
  888. mov es:[bx][2], dx
  889. mov es:[bx], ax
  890. pop bp
  891. ret far RetSize
  892. (**************************************************************************)
  893. section
  894. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  895. extrn __aFlshl
  896. extrn __aNlshl
  897. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  898. RetSize = 6
  899. shlPtr = sframe
  900. shlp = 4+sframe
  901. (*%F NearPtr *)
  902. (*%T NearCall *)
  903. public __alshl :
  904. (*%E *)
  905. (*%E *)
  906. public __aNFalshl:
  907. push bp
  908. mov bp, sp
  909. les bx, ss:[bp][shlPtr]
  910. mov ax, es:[bx]
  911. mov dx, es:[bx][2]
  912. mov cx, [bp][shlp]
  913. call __aNlshl
  914. mov es:[bx][2], dx
  915. mov es:[bx], ax
  916. pop bp
  917. ret RetSize
  918. (**************************************************************************)
  919. section
  920. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  921. extrn __aFlshl
  922. extrn __aNlshl
  923. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  924. RetSize = 6
  925. shlPtr = lframe
  926. shlp = 4+lframe
  927. (*%F NearPtr *)
  928. (*%F NearCall *)
  929. public __alshl :
  930. (*%E *)
  931. (*%E *)
  932. public __aFFalshl:
  933. push bp
  934. mov bp, sp
  935. les bx, ss:[bp][shlPtr]
  936. mov ax, es:[bx]
  937. mov dx, es:[bx][2]
  938. mov cx, [bp][shlp]
  939. call far __aFlshl
  940. mov es:[bx][2], dx
  941. mov es:[bx], ax
  942. pop bp
  943. ret far RetSize
  944. (**************************************************************************)
  945. section
  946. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  947. (*%T NearCall *)
  948. public __lshl:
  949. (*%E *)
  950. public __aNlshl:
  951. sub ch,ch
  952. jcxz local2
  953. local1:
  954. shl ax,1
  955. rcl dx,1
  956. loop local1
  957. local2:
  958. ret 0
  959. (**************************************************************************)
  960. section
  961. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  962. (*%F NearCall *)
  963. public __lshl:
  964. (*%E *)
  965. public __aFlshl:
  966. sub ch,ch
  967. jcxz local2
  968. local1:
  969. shl ax,1
  970. rcl dx,1
  971. loop local1
  972. local2:
  973. ret far 0
  974. (**************************************************************************)
  975. section
  976. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  977. extrn __aFlshr
  978. extrn __aNlshr
  979. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  980. RetSize = 4
  981. shrPtr = sframe
  982. shrp = 2+sframe
  983. (*%T NearPtr *)
  984. (*%T NearCall *)
  985. public __alshr :
  986. (*%E *)
  987. (*%E *)
  988. public __aNNalshr:
  989. push bp
  990. mov bp, sp
  991. mov bx, ss:[bp][shrPtr]
  992. push ds
  993. pop es
  994. mov ax, es:[bx]
  995. mov dx, es:[bx][2]
  996. mov cx, [bp][shrp]
  997. call __aNlshr
  998. mov es:[bx][2], dx
  999. mov es:[bx], ax
  1000. pop bp
  1001. ret RetSize
  1002. (**************************************************************************)
  1003. section
  1004. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1005. extrn __aFlshr
  1006. extrn __aNlshr
  1007. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1008. RetSize = 4
  1009. shrPtr = lframe
  1010. shrp = 2+lframe
  1011. (*%T NearPtr *)
  1012. (*%F NearCall *)
  1013. public __alshr :
  1014. (*%E *)
  1015. (*%E *)
  1016. public __aFNalshr:
  1017. push bp
  1018. mov bp, sp
  1019. mov bx, ss:[bp][shrPtr]
  1020. push ds
  1021. pop es
  1022. mov ax, es:[bx]
  1023. mov dx, es:[bx][2]
  1024. mov cx, [bp][shrp]
  1025. call far __aFlshr
  1026. mov es:[bx][2], dx
  1027. mov es:[bx], ax
  1028. pop bp
  1029. ret far RetSize
  1030. (**************************************************************************)
  1031. section
  1032. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1033. extrn __aFlshr
  1034. extrn __aNlshr
  1035. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1036. RetSize = 6
  1037. shrPtr = sframe
  1038. shrp = 4+sframe
  1039. (*%F NearPtr *)
  1040. (*%T NearCall *)
  1041. public __alshr :
  1042. (*%E *)
  1043. (*%E *)
  1044. public __aNFalshr:
  1045. push bp
  1046. mov bp, sp
  1047. les bx, ss:[bp][shrPtr]
  1048. mov ax, es:[bx]
  1049. mov dx, es:[bx][2]
  1050. mov cx, [bp][shrp]
  1051. call __aNlshr
  1052. mov es:[bx][2], dx
  1053. mov es:[bx], ax
  1054. pop bp
  1055. ret RetSize
  1056. (**************************************************************************)
  1057. section
  1058. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1059. extrn __aFlshr
  1060. extrn __aNlshr
  1061. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1062. RetSize = 6
  1063. shrPtr = lframe
  1064. shrp = 4+lframe
  1065. (*%F NearPtr *)
  1066. (*%F NearCall *)
  1067. public __alshr :
  1068. (*%E *)
  1069. (*%E *)
  1070. public __aFFalshr:
  1071. push bp
  1072. mov bp, sp
  1073. les bx, ss:[bp][shrPtr]
  1074. mov ax, es:[bx]
  1075. mov dx, es:[bx][2]
  1076. mov cx, [bp][shrp]
  1077. call far __aFlshr
  1078. mov es:[bx][2], dx
  1079. mov es:[bx], ax
  1080. pop bp
  1081. ret far RetSize
  1082. (**************************************************************************)
  1083. section
  1084. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1085. (*%T NearCall *)
  1086. public __lshr:
  1087. (*%E *)
  1088. public __aNlshr:
  1089. sub ch,ch
  1090. jcxz local2
  1091. local1:
  1092. shr dx,1
  1093. rcr ax,1
  1094. loop local1
  1095. local2:
  1096. ret 0
  1097. (**************************************************************************)
  1098. section
  1099. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1100. (*%F NearCall *)
  1101. public __lshr:
  1102. (*%E *)
  1103. public __aFlshr:
  1104. sub ch,ch
  1105. jcxz local2
  1106. local1:
  1107. shr dx,1
  1108. rcr ax,1
  1109. loop local1
  1110. local2:
  1111. ret far 0
  1112. (**************************************************************************)
  1113. section
  1114. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1115. extrn __aFuldiv
  1116. extrn __aNuldiv
  1117. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1118. RetSize = 6
  1119. divPtr = sframe
  1120. divisor = 2+sframe
  1121. (*%T NearPtr *)
  1122. (*%T NearCall *)
  1123. public __auldiv :
  1124. (*%E *)
  1125. (*%E *)
  1126. public __aNNauldiv:
  1127. push bp
  1128. mov bp, sp
  1129. mov bx, ss:[bp][divPtr]
  1130. push ds
  1131. pop es
  1132. push [bp][divisor][2]
  1133. push [bp][divisor]
  1134. push es:[bx][2]
  1135. push es:[bx]
  1136. call __aNuldiv
  1137. mov es:[bx][2], dx
  1138. mov es:[bx], ax
  1139. pop bp
  1140. ret RetSize
  1141. (**************************************************************************)
  1142. section
  1143. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1144. extrn __aFuldiv
  1145. extrn __aNuldiv
  1146. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1147. RetSize = 6
  1148. divPtr = lframe
  1149. divisor = 2+lframe
  1150. (*%T NearPtr *)
  1151. (*%F NearCall *)
  1152. public __auldiv :
  1153. (*%E *)
  1154. (*%E *)
  1155. public __aFNauldiv:
  1156. push bp
  1157. mov bp, sp
  1158. mov bx, ss:[bp][divPtr]
  1159. push ds
  1160. pop es
  1161. push [bp][divisor][2]
  1162. push [bp][divisor]
  1163. push es:[bx][2]
  1164. push es:[bx]
  1165. call far __aFuldiv
  1166. mov es:[bx][2], dx
  1167. mov es:[bx], ax
  1168. pop bp
  1169. ret far RetSize
  1170. (**************************************************************************)
  1171. section
  1172. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1173. extrn __aFuldiv
  1174. extrn __aNuldiv
  1175. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1176. RetSize = 8
  1177. divPtr = sframe
  1178. divisor = 4+sframe
  1179. (*%F NearPtr *)
  1180. (*%T NearCall *)
  1181. public __auldiv :
  1182. (*%E *)
  1183. (*%E *)
  1184. public __aNFauldiv:
  1185. push bp
  1186. mov bp, sp
  1187. les bx, ss:[bp][divPtr]
  1188. push [bp][divisor][2]
  1189. push [bp][divisor]
  1190. push es:[bx][2]
  1191. push es:[bx]
  1192. call __aNuldiv
  1193. mov es:[bx][2], dx
  1194. mov es:[bx], ax
  1195. pop bp
  1196. ret RetSize
  1197. (**************************************************************************)
  1198. section
  1199. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1200. extrn __aFuldiv
  1201. extrn __aNuldiv
  1202. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1203. RetSize = 8
  1204. divPtr = lframe
  1205. divisor = 4+lframe
  1206. (*%F NearPtr *)
  1207. (*%F NearCall *)
  1208. public __auldiv :
  1209. (*%E *)
  1210. (*%E *)
  1211. public __aFFauldiv:
  1212. push bp
  1213. mov bp, sp
  1214. les bx, ss:[bp][divPtr]
  1215. push [bp][divisor][2]
  1216. push [bp][divisor]
  1217. push es:[bx][2]
  1218. push es:[bx]
  1219. call far __aFuldiv
  1220. mov es:[bx][2], dx
  1221. mov es:[bx], ax
  1222. pop bp
  1223. ret far RetSize
  1224. (**************************************************************************)
  1225. section
  1226. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1227. usW1 = sframe
  1228. usW2 = 2+sframe
  1229. uvW1 = 4+sframe
  1230. uvW2 = 6+sframe
  1231. (*%T NearCall *)
  1232. public __uldiv:
  1233. (*%E *)
  1234. public __aNuldiv:
  1235. push bp
  1236. mov bp,sp
  1237. push bx
  1238. push di
  1239. mov ax, [bp][uvW2]
  1240. or ax, ax
  1241. jne local1
  1242. mov cx, [bp][uvW1]
  1243. mov ax, [bp][usW2]
  1244. sub dx, dx
  1245. div cx
  1246. mov bx, ax
  1247. mov ax, [bp][usW1]
  1248. div cx
  1249. mov dx, bx
  1250. jmp local5
  1251. local1:
  1252. mov cx, ax
  1253. mov bx, [bp][uvW1]
  1254. mov dx, [bp][usW2]
  1255. mov ax, [bp][usW1]
  1256. local2:
  1257. shr cx, 1
  1258. rcr bx, 1
  1259. shr dx, 1
  1260. rcr ax, 1
  1261. or cx, cx
  1262. jne local2
  1263. div bx
  1264. mov di, ax
  1265. mul word [bp][uvW2]
  1266. xchg ax, cx
  1267. mov ax, [bp][uvW1]
  1268. mul di
  1269. add dx, cx
  1270. jb local3
  1271. cmp dx, [bp][usW2]
  1272. ja local3
  1273. jb local4
  1274. cmp ax, [bp][usW1]
  1275. jbe local4
  1276. local3:
  1277. dec di
  1278. local4:
  1279. sub dx, dx
  1280. xchg ax, di
  1281. local5:
  1282. pop di
  1283. pop bx
  1284. mov sp,bp
  1285. pop bp
  1286. ret 8
  1287. (**************************************************************************)
  1288. section
  1289. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1290. usW1 = lframe
  1291. usW2 = 2+lframe
  1292. uvW1 = 4+lframe
  1293. uvW2 = 6+lframe
  1294. (*%F NearCall *)
  1295. public __uldiv:
  1296. (*%E *)
  1297. public __aFuldiv:
  1298. push bp
  1299. mov bp,sp
  1300. push bx
  1301. push di
  1302. mov ax, [bp][uvW2]
  1303. or ax, ax
  1304. jne local1
  1305. mov cx, [bp][uvW1]
  1306. mov ax, [bp][usW2]
  1307. sub dx, dx
  1308. div cx
  1309. mov bx, ax
  1310. mov ax, [bp][usW1]
  1311. div cx
  1312. mov dx, bx
  1313. jmp local5
  1314. local1:
  1315. mov cx, ax
  1316. mov bx, [bp][uvW1]
  1317. mov dx, [bp][usW2]
  1318. mov ax, [bp][usW1]
  1319. local2:
  1320. shr cx, 1
  1321. rcr bx, 1
  1322. shr dx, 1
  1323. rcr ax, 1
  1324. or cx, cx
  1325. jne local2
  1326. div bx
  1327. mov di, ax
  1328. mul word [bp][uvW2]
  1329. xchg ax, cx
  1330. mov ax, [bp][uvW1]
  1331. mul di
  1332. add dx, cx
  1333. jb local3
  1334. cmp dx, [bp][usW2]
  1335. ja local3
  1336. jb local4
  1337. cmp ax, [bp][usW1]
  1338. jbe local4
  1339. local3:
  1340. dec di
  1341. local4:
  1342. sub dx, dx
  1343. xchg ax, di
  1344. local5:
  1345. pop di
  1346. pop bx
  1347. mov sp,bp
  1348. pop bp
  1349. ret far 8
  1350. (**************************************************************************)
  1351. section
  1352. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1353. extrn __aFulrem
  1354. extrn __aNulrem
  1355. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1356. RetSize = 6
  1357. remPtr = sframe
  1358. remisor = 2+sframe
  1359. (*%T NearPtr *)
  1360. (*%T NearCall *)
  1361. public __aulrem :
  1362. (*%E *)
  1363. (*%E *)
  1364. public __aNNaulrem:
  1365. push bp
  1366. mov bp, sp
  1367. mov bx, ss:[bp][remPtr]
  1368. push ds
  1369. pop es
  1370. push [bp][remisor][2]
  1371. push [bp][remisor]
  1372. push es:[bx][2]
  1373. push es:[bx]
  1374. call __aNulrem
  1375. mov es:[bx][2], dx
  1376. mov es:[bx], ax
  1377. pop bp
  1378. ret RetSize
  1379. (**************************************************************************)
  1380. section
  1381. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1382. extrn __aFulrem
  1383. extrn __aNulrem
  1384. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1385. RetSize = 6
  1386. remPtr = lframe
  1387. remisor = 2+lframe
  1388. (*%T NearPtr *)
  1389. (*%F NearCall *)
  1390. public __aulrem :
  1391. (*%E *)
  1392. (*%E *)
  1393. public __aFNaulrem:
  1394. push bp
  1395. mov bp, sp
  1396. mov bx, ss:[bp][remPtr]
  1397. push ds
  1398. pop es
  1399. push [bp][remisor][2]
  1400. push [bp][remisor]
  1401. push es:[bx][2]
  1402. push es:[bx]
  1403. call far __aFulrem
  1404. mov es:[bx][2], dx
  1405. mov es:[bx], ax
  1406. pop bp
  1407. ret far RetSize
  1408. (**************************************************************************)
  1409. section
  1410. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1411. extrn __aFulrem
  1412. extrn __aNulrem
  1413. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1414. RetSize = 8
  1415. remPtr = sframe
  1416. remisor = 4+sframe
  1417. (*%F NearPtr *)
  1418. (*%T NearCall *)
  1419. public __aulrem :
  1420. (*%E *)
  1421. (*%E *)
  1422. public __aNFaulrem:
  1423. push bp
  1424. mov bp, sp
  1425. les bx, ss:[bp][remPtr]
  1426. push [bp][remisor][2]
  1427. push [bp][remisor]
  1428. push es:[bx][2]
  1429. push es:[bx]
  1430. call __aNulrem
  1431. mov es:[bx][2], dx
  1432. mov es:[bx], ax
  1433. pop bp
  1434. ret RetSize
  1435. (**************************************************************************)
  1436. section
  1437. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1438. extrn __aFulrem
  1439. extrn __aNulrem
  1440. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1441. RetSize = 8
  1442. remPtr = lframe
  1443. remisor = 4+lframe
  1444. (*%F NearPtr *)
  1445. (*%F NearCall *)
  1446. public __aulrem :
  1447. (*%E *)
  1448. (*%E *)
  1449. public __aFFaulrem:
  1450. push bp
  1451. mov bp, sp
  1452. les bx, ss:[bp][remPtr]
  1453. push [bp][remisor][2]
  1454. push [bp][remisor]
  1455. push es:[bx][2]
  1456. push es:[bx]
  1457. call far __aFulrem
  1458. mov es:[bx][2], dx
  1459. mov es:[bx], ax
  1460. pop bp
  1461. ret far RetSize
  1462. (**************************************************************************)
  1463. section
  1464. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1465. usW1 = sframe
  1466. usW2 = 2+sframe
  1467. uvW1 = 4+sframe
  1468. uvW2 = 6+sframe
  1469. (*%T NearCall *)
  1470. public __ulrem :
  1471. (*%E *)
  1472. public __aNulrem :
  1473. push bp
  1474. mov bp, sp
  1475. push bx
  1476. mov ax, [bp][uvW2]
  1477. or ax, ax
  1478. jne local1
  1479. mov cx, [bp][uvW1]
  1480. mov ax, [bp][usW2]
  1481. sub dx, dx
  1482. div cx
  1483. mov ax, [bp][usW1]
  1484. div cx
  1485. mov ax, dx
  1486. sub dx, dx
  1487. jmp local5
  1488. local1:
  1489. mov cx, ax
  1490. mov bx, [bp][uvW1]
  1491. mov dx, [bp][usW2]
  1492. mov ax, [bp][usW1]
  1493. local2:
  1494. shr cx,1
  1495. rcr bx,1
  1496. shr dx,1
  1497. rcr ax, 1
  1498. or cx, cx
  1499. jne local2
  1500. div bx
  1501. mov cx, ax
  1502. mul word [bp][uvW2]
  1503. xchg ax, cx
  1504. mul word [bp][uvW1]
  1505. add dx, cx
  1506. jb local3
  1507. cmp dx, [bp][usW2]
  1508. ja local3
  1509. jb local4
  1510. cmp ax, [bp][usW1]
  1511. jbe local4
  1512. local3:
  1513. sub ax, [bp][uvW1]
  1514. sbb dx, [bp][uvW2]
  1515. local4:
  1516. sub ax, [bp][usW1]
  1517. sbb dx, [bp][usW2]
  1518. neg dx
  1519. neg ax
  1520. sbb dx, 0
  1521. local5:
  1522. pop bx
  1523. mov sp,bp
  1524. pop bp
  1525. ret 8
  1526. (**************************************************************************)
  1527. section
  1528. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1529. usW1 = lframe
  1530. usW2 = 2+lframe
  1531. uvW1 = 4+lframe
  1532. uvW2 = 6+lframe
  1533. (*%F NearCall *)
  1534. public __ulrem :
  1535. (*%E *)
  1536. public __aFulrem :
  1537. push bp
  1538. mov bp, sp
  1539. push bx
  1540. mov ax, [bp][uvW2]
  1541. or ax, ax
  1542. jne local1
  1543. mov cx, [bp][uvW1]
  1544. mov ax, [bp][usW2]
  1545. sub dx, dx
  1546. div cx
  1547. mov ax, [bp][usW1]
  1548. div cx
  1549. mov ax, dx
  1550. sub dx, dx
  1551. jmp local5
  1552. local1:
  1553. mov cx, ax
  1554. mov bx, [bp][uvW1]
  1555. mov dx, [bp][usW2]
  1556. mov ax, [bp][usW1]
  1557. local2:
  1558. shr cx,1
  1559. rcr bx,1
  1560. shr dx,1
  1561. rcr ax, 1
  1562. or cx, cx
  1563. jne local2
  1564. div bx
  1565. mov cx, ax
  1566. mul word [bp][uvW2]
  1567. xchg ax, cx
  1568. mul word [bp][uvW1]
  1569. add dx, cx
  1570. jb local3
  1571. cmp dx, [bp][usW2]
  1572. ja local3
  1573. jb local4
  1574. cmp ax, [bp][usW1]
  1575. jbe local4
  1576. local3:
  1577. sub ax, [bp][uvW1]
  1578. sbb dx, [bp][uvW2]
  1579. local4:
  1580. sub ax, [bp][usW1]
  1581. sbb dx, [bp][usW2]
  1582. neg dx
  1583. neg ax
  1584. sbb dx, 0
  1585. local5:
  1586. pop bx
  1587. mov sp,bp
  1588. pop bp
  1589. ret far 8
  1590. (**************************************************************************)
  1591. section
  1592. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1593. extrn __aFulshr
  1594. extrn __aNulshr
  1595. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1596. RetSize = 4
  1597. shrPtr = sframe
  1598. shrisor = 2+sframe
  1599. (*%T NearPtr *)
  1600. (*%T NearCall *)
  1601. public __aulshr :
  1602. (*%E *)
  1603. (*%E *)
  1604. public __aNNaulshr:
  1605. push bp
  1606. mov bp, sp
  1607. mov bx, ss:[bp][shrPtr]
  1608. push ds
  1609. pop es
  1610. mov ax, es:[bx]
  1611. mov dx, es:[bx][2]
  1612. mov cx, [bp][shrisor]
  1613. call __aNulshr
  1614. mov es:[bx][2], dx
  1615. mov es:[bx], ax
  1616. pop bp
  1617. ret RetSize
  1618. (**************************************************************************)
  1619. section
  1620. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1621. extrn __aFulshr
  1622. extrn __aNulshr
  1623. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1624. RetSize = 4
  1625. shrPtr = lframe
  1626. shrisor = 2+lframe
  1627. (*%T NearPtr *)
  1628. (*%F NearCall *)
  1629. public __aulshr :
  1630. (*%E *)
  1631. (*%E *)
  1632. public __aFNaulshr:
  1633. push bp
  1634. mov bp, sp
  1635. mov bx, ss:[bp][shrPtr]
  1636. push ds
  1637. pop es
  1638. mov ax, es:[bx]
  1639. mov dx, es:[bx][2]
  1640. mov cx, [bp][shrisor]
  1641. call far __aFulshr
  1642. mov es:[bx][2], dx
  1643. mov es:[bx], ax
  1644. pop bp
  1645. ret far RetSize
  1646. (**************************************************************************)
  1647. section
  1648. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1649. extrn __aFulshr
  1650. extrn __aNulshr
  1651. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1652. RetSize = 6
  1653. shrPtr = sframe
  1654. shrisor = 4+sframe
  1655. (*%F NearPtr *)
  1656. (*%T NearCall *)
  1657. public __aulshr :
  1658. (*%E *)
  1659. (*%E *)
  1660. public __aNFaulshr:
  1661. push bp
  1662. mov bp, sp
  1663. les bx, ss:[bp][shrPtr]
  1664. mov ax, es:[bx]
  1665. mov dx, es:[bx][2]
  1666. mov cx, [bp][shrisor]
  1667. call __aNulshr
  1668. mov es:[bx][2], dx
  1669. mov es:[bx], ax
  1670. pop bp
  1671. ret RetSize
  1672. (**************************************************************************)
  1673. section
  1674. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1675. extrn __aFulshr
  1676. extrn __aNulshr
  1677. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1678. RetSize = 6
  1679. shrPtr = lframe
  1680. shrisor = 4+lframe
  1681. (*%F NearPtr *)
  1682. (*%F NearCall *)
  1683. public __aulshr :
  1684. (*%E *)
  1685. (*%E *)
  1686. public __aFFaulshr:
  1687. push bp
  1688. mov bp, sp
  1689. les bx, ss:[bp][shrPtr]
  1690. mov ax, es:[bx]
  1691. mov dx, es:[bx][2]
  1692. mov cx, [bp][shrisor]
  1693. call far __aFulshr
  1694. mov es:[bx][2], dx
  1695. mov es:[bx], ax
  1696. pop bp
  1697. ret far RetSize
  1698. (**************************************************************************)
  1699. section
  1700. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1701. (*%T NearCall *)
  1702. public __ulshr:
  1703. (*%E *)
  1704. public __aNulshr:
  1705. sub ch,ch
  1706. jcxz local2
  1707. local1:
  1708. shr dx,1
  1709. rcr ax,1
  1710. loop local1
  1711. local2:
  1712. ret 0
  1713. (**************************************************************************)
  1714. section
  1715. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1716. (*%F NearCall *)
  1717. public __ulshr:
  1718. (*%E *)
  1719. public __aFulshr:
  1720. sub ch,ch
  1721. jcxz local2
  1722. local1:
  1723. shr dx,1
  1724. rcr ax,1
  1725. loop local1
  1726. local2:
  1727. ret far 0
  1728. (**************************************************************************)
  1729. section
  1730. segment _DATA(DATA,28H)
  1731. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1732. (*%F _WINDOWS *)
  1733. select _DATA
  1734. public __AHSHIFT : dw 12
  1735. public __AHINCR : dw 1000H
  1736. (*%E *)
  1737. (*%T _WINDOWS *)
  1738. select _DATA
  1739. extrn __AHSHIFT
  1740. extrn __AHINCR
  1741. (*%E *)
  1742. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1743. ptr1 = sframe
  1744. ptr2 = 4+sframe
  1745. (*%T NearCall *)
  1746. public __hdiff:
  1747. (*%E *)
  1748. public __aNahdiff:
  1749. push bp
  1750. mov bp, sp
  1751. push ds
  1752. (*%T _WINDOWS *)
  1753. mov ax, ss
  1754. (*%E *)
  1755. (*%F _WINDOWS *)
  1756. mov ax, _DATA
  1757. (*%E *)
  1758. mov ds, ax
  1759. mov ax, [bp][ptr1]
  1760. mov dx, [bp][ptr1][2]
  1761. mov bx, [bp][ptr2][2]
  1762. mov cx, [__AHSHIFT]
  1763. shr dx, cl
  1764. shr bx, cl
  1765. sub ax, [bp][ptr2]
  1766. sbb dx, bx
  1767. pop ds
  1768. pop bp
  1769. ret 8
  1770. (**************************************************************************)
  1771. section
  1772. segment _DATA(DATA,28H)
  1773. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1774. extrn __AHSHIFT
  1775. extrn __AHINCR
  1776. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  1777. ptr1 = lframe
  1778. ptr2 = 4+lframe
  1779. (*%F NearCall *)
  1780. public __hdiff:
  1781. (*%E *)
  1782. public __aFahdiff:
  1783. push bp
  1784. mov bp, sp
  1785. push ds
  1786. (*%T _WINDOWS *)
  1787. mov ax, ss
  1788. (*%E *)
  1789. (*%F _WINDOWS *)
  1790. mov ax, _DATA
  1791. (*%E *)
  1792. mov ds, ax
  1793. mov ax, [bp][ptr1]
  1794. mov dx, [bp][ptr1][2]
  1795. mov bx, [bp][ptr2][2]
  1796. mov cx, [__AHSHIFT]
  1797. shr dx, cl
  1798. shr bx, cl
  1799. sub ax, [bp][ptr2]
  1800. sbb dx, bx
  1801. pop ds
  1802. pop bp
  1803. ret far 8
  1804. (**************************************************************************)
  1805. section
  1806. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1807. public __aNlrrot:
  1808. and cx, 01FH
  1809. jcxz local2
  1810. push bx
  1811. local1:
  1812. mov bx, dx
  1813. shr bx, 1
  1814. rcr ax, 1
  1815. rcr dx, 1
  1816. loop local1
  1817. pop bx
  1818. local2:
  1819. ret 0
  1820. (**************************************************************************)
  1821. section
  1822. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1823. public __aFlrrot:
  1824. and cx, 01FH
  1825. jcxz local2
  1826. push bx
  1827. local1:
  1828. mov bx, dx
  1829. shr bx, 1
  1830. rcr ax, 1
  1831. rcr dx, 1
  1832. loop local1
  1833. pop bx
  1834. local2:
  1835. ret far 0
  1836. (**************************************************************************)
  1837. section
  1838. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1839. public __aNllrot:
  1840. and cx, 1FH
  1841. jcxz local2
  1842. local1:
  1843. shl ax, 1
  1844. rcl dx, 1
  1845. adc ax, 0
  1846. loop local1
  1847. local2:
  1848. ret 0
  1849. (**************************************************************************)
  1850. section
  1851. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1852. public __aFllrot:
  1853. and cx, 1FH
  1854. jcxz local2
  1855. local1:
  1856. shl ax, 1
  1857. rcl dx, 1
  1858. adc ax, 0
  1859. loop local1
  1860. local2:
  1861. ret far 0
  1862. (**************************************************************************)
  1863. section
  1864. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1865. old_cw = -2
  1866. new_cw = -4
  1867. long_value = -12
  1868. locals = 12
  1869. public __ftol :
  1870. push bp
  1871. mov bp, sp
  1872. sub sp, locals
  1873. push bx
  1874. push cx
  1875. push si
  1876. push di
  1877. fstcw [bp][old_cw]
  1878. fwait
  1879. mov ax, [bp][old_cw]
  1880. or ah, 0CH
  1881. mov [bp][new_cw], ax
  1882. fldcw [bp][new_cw]
  1883. fistp qword [bp][long_value], st(0)
  1884. fldcw [bp][old_cw]
  1885. mov ax, [bp][long_value]
  1886. mov dx, [bp][long_value][2]
  1887. pop di
  1888. pop si
  1889. pop cx
  1890. pop bx
  1891. mov sp, bp
  1892. pop bp
  1893. (*%F NearCall *)
  1894. ret far 0
  1895. (*%E *)
  1896. (*%T NearCall *)
  1897. ret 0
  1898. (*%E *)
  1899. (**************************************************************************)
  1900. section
  1901. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  1902. public __fadd :
  1903. faddp st(1), st(0)
  1904. fwait
  1905. (*%F NearCall *)
  1906. ret far 0
  1907. (*%E *)
  1908. (*%T NearCall *)
  1909. ret 0
  1910. (*%E *)
  1911. public __fmul:
  1912. fmulp st(1), st(0)
  1913. fwait
  1914. (*%F NearCall *)
  1915. ret far 0
  1916. (*%E *)
  1917. (*%T NearCall *)
  1918. ret 0
  1919. (*%E *)
  1920. public __fsub :
  1921. fsubp st(1), st(0)
  1922. fwait
  1923. (*%F NearCall *)
  1924. ret far 0
  1925. (*%E *)
  1926. (*%T NearCall *)
  1927. ret 0
  1928. (*%E *)
  1929. public __fsubr :
  1930. fsubrp st(1), st(0)
  1931. fwait
  1932. (*%F NearCall *)
  1933. ret far 0
  1934. (*%E *)
  1935. (*%T NearCall *)
  1936. ret 0
  1937. (*%E *)
  1938. public __fdiv :
  1939. fdivp st(1), st(0)
  1940. fwait
  1941. (*%F NearCall *)
  1942. ret far 0
  1943. (*%E *)
  1944. (*%T NearCall *)
  1945. ret 0
  1946. (*%E *)
  1947. public __fdivr :
  1948. fdivrp st(1), st(0)
  1949. fwait
  1950. (*%F NearCall *)
  1951. ret far 0
  1952. (*%E *)
  1953. (*%T NearCall *)
  1954. ret 0
  1955. (*%E *)
  1956. public __fdup :
  1957. fld st(0), st(0)
  1958. fwait
  1959. (*%F NearCall *)
  1960. ret far 0
  1961. (*%E *)
  1962. (*%T NearCall *)
  1963. ret 0
  1964. (*%E *)
  1965. public __fchs :
  1966. fchs st(0)
  1967. fwait
  1968. (*%F NearCall *)
  1969. ret far 0
  1970. (*%E *)
  1971. (*%T NearCall *)
  1972. ret 0
  1973. (*%E *)
  1974. public __fldd:
  1975. fld qword st(0), [bx]
  1976. fwait
  1977. (*%F NearCall *)
  1978. ret far 0
  1979. (*%E *)
  1980. (*%T NearCall *)
  1981. ret 0
  1982. (*%E *)
  1983. public __fstdp :
  1984. fstp qword [bx], st(0)
  1985. fwait
  1986. (*%F NearCall *)
  1987. ret far 0
  1988. (*%E *)
  1989. (*%T NearCall *)
  1990. ret 0
  1991. (*%E *)
  1992. public __fstd :
  1993. fst qword [bx], st(0)
  1994. fwait
  1995. (*%F NearCall *)
  1996. ret far 0
  1997. (*%E *)
  1998. (*%T NearCall *)
  1999. ret 0
  2000. (*%E *)
  2001. public __faddd :
  2002. fadd qword st(0), [bx]
  2003. fwait
  2004. (*%F NearCall *)
  2005. ret far 0
  2006. (*%E *)
  2007. (*%T NearCall *)
  2008. ret 0
  2009. (*%E *)
  2010. public __fmuld :
  2011. fmul qword st(0), [bx]
  2012. fwait
  2013. (*%F NearCall *)
  2014. ret far 0
  2015. (*%E *)
  2016. (*%T NearCall *)
  2017. ret 0
  2018. (*%E *)
  2019. public __fsubd :
  2020. fsub qword st(0), [bx]
  2021. fwait
  2022. (*%F NearCall *)
  2023. ret far 0
  2024. (*%E *)
  2025. (*%T NearCall *)
  2026. ret 0
  2027. (*%E *)
  2028. public __fsubdr :
  2029. fsubr qword st(0), [bx]
  2030. fwait
  2031. (*%F NearCall *)
  2032. ret far 0
  2033. (*%E *)
  2034. (*%T NearCall *)
  2035. ret 0
  2036. (*%E *)
  2037. public __fdivd :
  2038. fdiv qword st(0), [bx]
  2039. fwait
  2040. (*%F NearCall *)
  2041. ret far 0
  2042. (*%E *)
  2043. (*%T NearCall *)
  2044. ret 0
  2045. (*%E *)
  2046. public __fdivdr :
  2047. fdivr qword st(0), [bx]
  2048. fwait
  2049. (*%F NearCall *)
  2050. ret far 0
  2051. (*%E *)
  2052. (*%T NearCall *)
  2053. ret 0
  2054. (*%E *)
  2055. public __fldw :
  2056. fild word st(0), [bx]
  2057. fwait
  2058. (*%F NearCall *)
  2059. ret far 0
  2060. (*%E *)
  2061. (*%T NearCall *)
  2062. ret 0
  2063. (*%E *)
  2064. public __fldl :
  2065. fild dword st(0), [bx]
  2066. fwait
  2067. (*%F NearCall *)
  2068. ret far 0
  2069. (*%E *)
  2070. (*%T NearCall *)
  2071. ret 0
  2072. (*%E *)
  2073. public __fldq :
  2074. fild qword st(0), [bx]
  2075. fwait
  2076. (*%F NearCall *)
  2077. ret far 0
  2078. (*%E *)
  2079. (*%T NearCall *)
  2080. ret 0
  2081. (*%E *)
  2082. (****************************************************************************)
  2083. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2084. public __slds :
  2085. push ss
  2086. pop es
  2087. public __elds :
  2088. fld dword st(0), es:[bx]
  2089. fwait
  2090. (*%F NearCall *)
  2091. ret far 0
  2092. (*%E *)
  2093. (*%T NearCall *)
  2094. ret 0
  2095. (*%E *)
  2096. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2097. public __sstsp :
  2098. push ss
  2099. pop es
  2100. public __estsp :
  2101. fstp dword es:[bx], st(0)
  2102. fwait
  2103. (*%F NearCall *)
  2104. ret far 0
  2105. (*%E *)
  2106. (*%T NearCall *)
  2107. ret 0
  2108. (*%E *)
  2109. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2110. public __ssts :
  2111. push ss
  2112. pop es
  2113. public __ests :
  2114. fst dword es:[bx], st(0)
  2115. fwait
  2116. (*%F NearCall *)
  2117. ret far 0
  2118. (*%E *)
  2119. (*%T NearCall *)
  2120. ret 0
  2121. (*%E *)
  2122. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2123. public __sadds :
  2124. push ss
  2125. pop es
  2126. public __eadds :
  2127. fadd dword st(0), es:[bx]
  2128. fwait
  2129. (*%F NearCall *)
  2130. ret far 0
  2131. (*%E *)
  2132. (*%T NearCall *)
  2133. ret 0
  2134. (*%E *)
  2135. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2136. public __smuls :
  2137. push ss
  2138. pop es
  2139. public __emuls :
  2140. fmul dword st(0), es:[bx]
  2141. fwait
  2142. (*%F NearCall *)
  2143. ret far 0
  2144. (*%E *)
  2145. (*%T NearCall *)
  2146. ret 0
  2147. (*%E *)
  2148. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2149. public __ssubs :
  2150. push ss
  2151. pop es
  2152. public __esubs :
  2153. fsub dword st(0), es:[bx]
  2154. fwait
  2155. (*%F NearCall *)
  2156. ret far 0
  2157. (*%E *)
  2158. (*%T NearCall *)
  2159. ret 0
  2160. (*%E *)
  2161. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2162. public __ssubsr :
  2163. push ss
  2164. pop es
  2165. public __esubsr :
  2166. fsubr dword st(0), es:[bx]
  2167. fwait
  2168. (*%F NearCall *)
  2169. ret far 0
  2170. (*%E *)
  2171. (*%T NearCall *)
  2172. ret 0
  2173. (*%E *)
  2174. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2175. public __sdivs :
  2176. push ss
  2177. pop es
  2178. public __edivs :
  2179. fdiv dword st(0), es:[bx]
  2180. fwait
  2181. (*%F NearCall *)
  2182. ret far 0
  2183. (*%E *)
  2184. (*%T NearCall *)
  2185. ret 0
  2186. (*%E *)
  2187. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2188. public __sdivsr :
  2189. push ss
  2190. pop es
  2191. public __edivsr :
  2192. fdivr dword st(0), es:[bx]
  2193. fwait
  2194. (*%F NearCall *)
  2195. ret far 0
  2196. (*%E *)
  2197. (*%T NearCall *)
  2198. ret 0
  2199. (*%E *)
  2200. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2201. public __sldd :
  2202. push ss
  2203. pop es
  2204. public __eldd :
  2205. fld qword st(0), es:[bx]
  2206. fwait
  2207. (*%F NearCall *)
  2208. ret far 0
  2209. (*%E *)
  2210. (*%T NearCall *)
  2211. ret 0
  2212. (*%E *)
  2213. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2214. public __sstdp :
  2215. push ss
  2216. pop es
  2217. public __estdp :
  2218. fstp qword es:[bx], st(0)
  2219. fwait
  2220. (*%F NearCall *)
  2221. ret far 0
  2222. (*%E *)
  2223. (*%T NearCall *)
  2224. ret 0
  2225. (*%E *)
  2226. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2227. public __sstd :
  2228. push ss
  2229. pop es
  2230. public __estd :
  2231. fst qword es:[bx], st(0)
  2232. fwait
  2233. (*%F NearCall *)
  2234. ret far 0
  2235. (*%E *)
  2236. (*%T NearCall *)
  2237. ret 0
  2238. (*%E *)
  2239. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2240. public __saddd :
  2241. push ss
  2242. pop es
  2243. public __eaddd :
  2244. fadd qword st(0), es:[bx]
  2245. fwait
  2246. (*%F NearCall *)
  2247. ret far 0
  2248. (*%E *)
  2249. (*%T NearCall *)
  2250. ret 0
  2251. (*%E *)
  2252. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2253. public __smuld :
  2254. push ss
  2255. pop es
  2256. public __emuld :
  2257. fmul qword st(0), es:[bx]
  2258. fwait
  2259. (*%F NearCall *)
  2260. ret far 0
  2261. (*%E *)
  2262. (*%T NearCall *)
  2263. ret 0
  2264. (*%E *)
  2265. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2266. public __ssubd :
  2267. push ss
  2268. pop es
  2269. public __esubd :
  2270. fsub qword st(0), es:[bx]
  2271. fwait
  2272. (*%F NearCall *)
  2273. ret far 0
  2274. (*%E *)
  2275. (*%T NearCall *)
  2276. ret 0
  2277. (*%E *)
  2278. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2279. public __ssubdr :
  2280. push ss
  2281. pop es
  2282. public __esubdr :
  2283. fsubr qword st(0), es:[bx]
  2284. fwait
  2285. (*%F NearCall *)
  2286. ret far 0
  2287. (*%E *)
  2288. (*%T NearCall *)
  2289. ret 0
  2290. (*%E *)
  2291. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2292. public __sdivd :
  2293. push ss
  2294. pop es
  2295. public __edivd :
  2296. fdiv qword st(0), es:[bx]
  2297. fwait
  2298. (*%F NearCall *)
  2299. ret far 0
  2300. (*%E *)
  2301. (*%T NearCall *)
  2302. ret 0
  2303. (*%E *)
  2304. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2305. public __sdivdr :
  2306. push ss
  2307. pop es
  2308. public __edivdr :
  2309. fdivr qword st(0), es:[bx]
  2310. fwait
  2311. (*%F NearCall *)
  2312. ret far 0
  2313. (*%E *)
  2314. (*%T NearCall *)
  2315. ret 0
  2316. (*%E *)
  2317. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2318. public __sldw :
  2319. push ss
  2320. pop es
  2321. public __eldw :
  2322. fild word st(0), es:[bx]
  2323. fwait
  2324. (*%F NearCall *)
  2325. ret far 0
  2326. (*%E *)
  2327. (*%T NearCall *)
  2328. ret 0
  2329. (*%E *)
  2330. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2331. public __sldl :
  2332. push ss
  2333. pop es
  2334. public __eldl :
  2335. fild dword st(0), es:[bx]
  2336. fwait
  2337. (*%F NearCall *)
  2338. ret far 0
  2339. (*%E *)
  2340. (*%T NearCall *)
  2341. ret 0
  2342. (*%E *)
  2343. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2344. public __sldq :
  2345. push ss
  2346. pop es
  2347. public __eldq :
  2348. fild qword st(0), es:[bx]
  2349. fwait
  2350. (*%F NearCall *)
  2351. ret far 0
  2352. (*%E *)
  2353. (*%T NearCall *)
  2354. ret 0
  2355. (*%E *)
  2356. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2357. public __flds :
  2358. fld dword st(0), [bx]
  2359. fwait
  2360. (*%F NearCall *)
  2361. ret far 0
  2362. (*%E *)
  2363. (*%T NearCall *)
  2364. ret 0
  2365. (*%E *)
  2366. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2367. public __fstsp :
  2368. fstp dword [bx], st(0)
  2369. fwait
  2370. (*%F NearCall *)
  2371. ret far 0
  2372. (*%E *)
  2373. (*%T NearCall *)
  2374. ret 0
  2375. (*%E *)
  2376. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2377. public __fsts :
  2378. fst dword [bx], st(0)
  2379. fwait
  2380. (*%F NearCall *)
  2381. ret far 0
  2382. (*%E *)
  2383. (*%T NearCall *)
  2384. ret 0
  2385. (*%E *)
  2386. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2387. public __fadds :
  2388. fadd dword st(0), [bx]
  2389. fwait
  2390. (*%F NearCall *)
  2391. ret far 0
  2392. (*%E *)
  2393. (*%T NearCall *)
  2394. ret 0
  2395. (*%E *)
  2396. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2397. public __fmuls :
  2398. fmul dword st(0), [bx]
  2399. fwait
  2400. (*%F NearCall *)
  2401. ret far 0
  2402. (*%E *)
  2403. (*%T NearCall *)
  2404. ret 0
  2405. (*%E *)
  2406. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2407. public __fsubs :
  2408. fsub dword st(0), [bx]
  2409. fwait
  2410. (*%F NearCall *)
  2411. ret far 0
  2412. (*%E *)
  2413. (*%T NearCall *)
  2414. ret 0
  2415. (*%E *)
  2416. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2417. public __fsubsr :
  2418. fsubr dword st(0), [bx]
  2419. fwait
  2420. (*%F NearCall *)
  2421. ret far 0
  2422. (*%E *)
  2423. (*%T NearCall *)
  2424. ret 0
  2425. (*%E *)
  2426. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2427. public __fdivs :
  2428. fdiv dword st(0), [bx]
  2429. fwait
  2430. (*%F NearCall *)
  2431. ret far 0
  2432. (*%E *)
  2433. (*%T NearCall *)
  2434. ret 0
  2435. (*%E *)
  2436. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2437. public __fdivsr :
  2438. fdivr dword st(0), [bx]
  2439. fwait
  2440. (*%F NearCall *)
  2441. ret far 0
  2442. (*%E *)
  2443. (*%T NearCall *)
  2444. ret 0
  2445. (*%E *)
  2446. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2447. public __dcvt :
  2448. (*%F NearCall *)
  2449. ret far 0
  2450. (*%E *)
  2451. (*%T NearCall *)
  2452. ret 0
  2453. (*%E *)
  2454. (****************************************************************************)
  2455. section
  2456. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2457. segment _DATA(DATA, 28H)
  2458. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2459. public DGROUP@ : dw _DATA
  2460. (****************************************************************************)
  2461. section
  2462. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2463. extrn _malloc
  2464. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2465. public __graphgetmem :
  2466. push bp
  2467. mov bp, sp
  2468. (*%F RegParam *)
  2469. push [bp][6]
  2470. (*%E *)
  2471. (*%T RegParam *)
  2472. mov ax, [bp][6]
  2473. (*%E *)
  2474. (*%F NearCall *)
  2475. call far _malloc
  2476. (*%E *)
  2477. (*%T NearCall *)
  2478. call _malloc
  2479. (*%E *)
  2480. (*%F RegParam *)
  2481. pop cx
  2482. (*%E *)
  2483. (*%T NearPtr *)
  2484. mov dx, ds
  2485. (*%E *)
  2486. pop bp
  2487. ret far 0
  2488. (****************************************************************************)
  2489. section
  2490. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2491. extrn _free
  2492. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2493. public __graphfreemem :
  2494. push bp
  2495. mov bp, sp
  2496. (*%F RegParam *)
  2497. (*%F NearPtr *)
  2498. push [bp][8]
  2499. push [bp][6]
  2500. (*%E *)
  2501. (*%T NearPtr *)
  2502. push [bp][6]
  2503. (*%E *)
  2504. (*%E *)
  2505. (*%T RegParam *)
  2506. (*%F NearPtr *)
  2507. mov bx, [bp][8]
  2508. mov ax, [bp][6]
  2509. (*%E *)
  2510. (*%T NearPtr *)
  2511. mov ax, [bp][6]
  2512. (*%E *)
  2513. (*%E *)
  2514. (*%F NearCall *)
  2515. call far _free
  2516. (*%E *)
  2517. (*%T NearCall *)
  2518. call _free
  2519. (*%E *)
  2520. (*%F RegParam *)
  2521. (*%F NearPtr *)
  2522. add sp, 4
  2523. (*%E *)
  2524. (*%T NearPtr *)
  2525. add sp, 2
  2526. (*%E *)
  2527. (*%E *)
  2528. pop bp
  2529. ret far 0
  2530. (****************************************************************************)
  2531. section
  2532. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2533. extrn _exit
  2534. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2535. public __graphexit :
  2536. push bp
  2537. mov bp, sp
  2538. (*%F RegParam *)
  2539. push [bp][6]
  2540. (*%E *)
  2541. (*%T RegParam *)
  2542. mov ax, [bp][6]
  2543. (*%E *)
  2544. (*%F NearCall *)
  2545. call far _exit
  2546. (*%E *)
  2547. (*%T NearCall *)
  2548. call _exit
  2549. (*%E *)
  2550. (****************************************************************************)
  2551. section
  2552. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2553. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2554. public N_SCOPY@ :
  2555. pop es
  2556. push cs
  2557. push es
  2558. public F_SCOPY@ :
  2559. public SCOPY@ :
  2560. push bp
  2561. mov bp,sp
  2562. push si
  2563. push di
  2564. push ds
  2565. lds si, [bp][6]
  2566. les di, [bp][0AH]
  2567. cld
  2568. shr cx,1
  2569. repe; movsw
  2570. adc cx,cx
  2571. repe; movsb
  2572. pop ds
  2573. pop di
  2574. pop si
  2575. pop bp
  2576. ret far 8
  2577. (****************************************************************************)
  2578. section
  2579. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  2580. public N_LXLSH@ :
  2581. pop bx
  2582. push cs
  2583. push bx
  2584. public F_LXLSH@ :
  2585. public LXLSH@ :
  2586. cmp cl, 10H
  2587. jae bigWord
  2588. mov bx, ax
  2589. shl ax, cl
  2590. shl dx, cl
  2591. neg cl
  2592. add cl, 10H
  2593. shr bx, cl
  2594. or dx, bx
  2595. ret far 0
  2596. bigWord:
  2597. sub cl, 10H
  2598. xchg ax, dx
  2599. xor ax, ax
  2600. shl dx, cl
  2601. ret far 0
  2602. section
  2603. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  2604. public N_LXRSH@ :
  2605. pop bx
  2606. push cs
  2607. push bx
  2608. public F_LXRSH@ :
  2609. public LXRSH@ :
  2610. cmp cl, 10H
  2611. jae bigWord
  2612. mov bx, dx
  2613. shr ax, cl
  2614. sar dx, cl
  2615. neg cl
  2616. add cl, 10H
  2617. shl bx, cl
  2618. or ax, bx
  2619. ret far 0
  2620. bigWord:
  2621. sub cl, 10H
  2622. xchg ax, dx
  2623. cwd
  2624. sar ax, cl
  2625. ret far 0
  2626. (****************************************************************************)
  2627. section
  2628. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2629. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2630. public F_LXMUL@ :
  2631. public LXMUL@ :
  2632. push si
  2633. xchg ax, si
  2634. xchg ax, dx
  2635. test ax, ax
  2636. je L1
  2637. mul bx
  2638. L1:
  2639. jcxz L2
  2640. xchg ax, cx
  2641. mul si
  2642. add ax, cx
  2643. L2:
  2644. xchg ax, si
  2645. mul bx
  2646. add dx, si
  2647. pop si
  2648. ret far 0
  2649. (****************************************************************************)
  2650. section
  2651. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE,28H)
  2652. select (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)
  2653. public N_LDIV@ :
  2654. pop cx
  2655. push cs
  2656. push cx
  2657. public F_LDIV@ :
  2658. public LDIV@ :
  2659. sub cx, cx
  2660. jmp L1
  2661. public N_LUDIV@ :
  2662. pop cx
  2663. push cs
  2664. push cx
  2665. public F_LUDIV@ :
  2666. public LUDIV@ :
  2667. mov cx, 1
  2668. jmp L1
  2669. public N_LMOD@ :
  2670. pop cx
  2671. push cs
  2672. push cx
  2673. public F_LMOD@ :
  2674. public LMOD@ :
  2675. mov cx, 2
  2676. jmp L1
  2677. public N_LUMOD@ :
  2678. pop cx
  2679. push cs
  2680. push cx
  2681. public F_LUMOD@ :
  2682. public LUMOD@ :
  2683. mov cx, 3
  2684. L1:
  2685. push bp
  2686. push si
  2687. push di
  2688. mov bp, sp
  2689. mov di, cx
  2690. mov ax, [bp][0AH]
  2691. mov dx, [bp][0CH]
  2692. mov bx, [bp][0EH]
  2693. mov cx, [bp][10H]
  2694. or cx, cx
  2695. jne L2
  2696. or dx, dx
  2697. je L10
  2698. or bx, bx
  2699. je L10
  2700. L2:
  2701. test di, 1
  2702. jne L4
  2703. or dx, dx
  2704. jns L3
  2705. neg dx
  2706. neg ax
  2707. sbb dx, 0
  2708. or di, 0CH
  2709. L3:
  2710. or cx, cx
  2711. jns L4
  2712. neg cx
  2713. neg bx
  2714. sbb cx, 0
  2715. xor di, 4
  2716. L4:
  2717. mov bp, cx
  2718. mov cx, 20H
  2719. push di
  2720. xor di, di
  2721. xor si, si
  2722. L5:
  2723. shl ax, 1
  2724. rcl dx, 1
  2725. rcl si, 1
  2726. rcl di, 1
  2727. cmp di, bp
  2728. jb L7
  2729. ja L6
  2730. cmp si, bx
  2731. jb L7
  2732. L6:
  2733. sub si, bx
  2734. sbb di, bp
  2735. inc ax
  2736. L7:
  2737. loop L5
  2738. pop bx
  2739. test bx, 2
  2740. je L8
  2741. mov ax, si
  2742. mov dx, di
  2743. shr bx, 1
  2744. L8:
  2745. test bx, 4
  2746. je L9
  2747. neg dx
  2748. neg ax
  2749. sbb dx, 0
  2750. L9:
  2751. pop di
  2752. pop si
  2753. pop bp
  2754. ret far 8
  2755. L10:
  2756. div bx
  2757. test di, 2
  2758. je L11
  2759. xchg ax, dx
  2760. L11:
  2761. xor dx, dx
  2762. jmp L9
  2763. (**************************************************************************)
  2764. segment _BSS(BSS, 48H)
  2765. public FLAGS8087@ :
  2766. org 2
  2767. (**************************************************************************)
  2768. section
  2769. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  2770. public FTOL@ :
  2771. public F_FTOL@ :
  2772. CW = -2
  2773. lnum = -6
  2774. locals = 6
  2775. push bp
  2776. mov bp, sp
  2777. sub sp, locals
  2778. fstcw [bp][CW]
  2779. fwait
  2780. mov ax, [bp][CW]
  2781. or word [bp][CW], 0C00H
  2782. fwait
  2783. fldcw [bp][CW]
  2784. fistp dword [bp][lnum], st(0)
  2785. mov [bp][CW], ax
  2786. fldcw [bp][CW]
  2787. mov ax, [bp][lnum]
  2788. mov dx, [bp][lnum][2]
  2789. mov sp, bp
  2790. pop bp
  2791. ret far 0
  2792. (**************************************************************************)
  2793. section
  2794. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  2795. public __fcmp:
  2796. push bp
  2797. mov bp,sp
  2798. sub sp,2
  2799. fxch st(0),st(1)
  2800. fcompp st(0),st(1)
  2801. fstsw [bp][-2]
  2802. fwait
  2803. mov ah,[bp][-1]
  2804. and ax,4100H
  2805. shr ax,1
  2806. shl ah,1
  2807. or ah,al
  2808. sahf
  2809. mov sp,bp
  2810. pop bp
  2811. (*%F NearCall *)
  2812. ret far 0
  2813. (*%E *)
  2814. (*%T NearCall *)
  2815. ret 0
  2816. (*%E *)
  2817. (**************************************************************************)
  2818. section
  2819. segment (*%F SameDS*)PARTY3_TEXT (*%E*)(*%T SameDS*) _TEXT (*%E*)(CODE, 28H)
  2820. public __fcompp :
  2821. push bp
  2822. mov bp,sp
  2823. sub sp,2
  2824. push ax
  2825. fcompp st(0),st(1)
  2826. fstsw [bp][-2]
  2827. fwait
  2828. mov ah,[bp][-1]
  2829. sahf
  2830. pop ax
  2831. mov sp,bp
  2832. pop bp
  2833. (*%F NearCall *)
  2834. ret far 0
  2835. (*%E *)
  2836. (*%T NearCall *)
  2837. ret 0
  2838. (*%E *)
  2839. end
  2840.