Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

945 lines
14 KiB

  1. ;----------------------------Module-Header------------------------------;
  2. ; Module Name: ROPTABLE.BLT
  3. ;
  4. ; Raster operation code templates for BitBLT.
  5. ;
  6. ; Created: In Windows' distant past (c. 1983)
  7. ;
  8. ; Copyright (c) 1983 - 1987 Microsoft Corporation
  9. ;
  10. ; This file defines the code templates for all raster operations which
  11. ; BitBLT supports.
  12. ;
  13. ; This file is part of a set that makes up the Windows BitBLT function
  14. ; at driver-level.
  15. ;-----------------------------------------------------------------------;
  16. if MASMFLAGS and PUBDEFS
  17. public Sn
  18. public DDx
  19. public DPna
  20. public Pn
  21. public PDSanon
  22. public PSnon
  23. public DPSona
  24. public PSon
  25. public PDSnaon
  26. public PDSaon
  27. public DPon
  28. public PDSonon
  29. public DPSnoon
  30. public DPSoon
  31. public DSon
  32. public PDSona
  33. public SDPxnon
  34. public SSPxDSxaxn
  35. public SPxDSxa
  36. public PSDPSanaxx
  37. public SDPSanaxn
  38. public DSna
  39. public PDSPanaxn
  40. public DPSana
  41. public PDSnaxn
  42. public DPSaon
  43. public PDSPaox
  44. public PDSox
  45. public SDPSxaxn
  46. public DPSxa
  47. public DSPDxaxn
  48. public DPSnaa
  49. public PSna
  50. public DPSaan
  51. public PSDnaon
  52. public SPDnaon
  53. public PDSPxaxn
  54. public SDPSaox
  55. public PSDPSaoxxn
  56. public SSPxPDxaxn
  57. public SPxPDxa
  58. public DSPDSoaxxn
  59. public SPDSoax
  60. public PDSoan
  61. public PSDPxox
  62. public SDPxon
  63. public PSDnoan
  64. public PSan
  65. public SDPnaon
  66. public SDPaon
  67. public PSDPaox
  68. public SDPSoox
  69. public SPDSaox
  70. public DPSDxaxn
  71. public SDPox
  72. public PSDPoax
  73. public SDPoan
  74. public PSx
  75. public SPDnox
  76. public SPDSxox
  77. public PDSxon
  78. public SPDnoan
  79. public SPDSonox
  80. public DPSxnan
  81. public SPDSnaox
  82. public SPDSanaxn
  83. public PDSana
  84. public DSan
  85. public PSDPxaxn
  86. public SDPxa
  87. public DSPDaox
  88. public PDSPDaoxxn
  89. public DPSDoax
  90. public DPSanon
  91. public PDSnox
  92. public DSnon
  93. public SDPana
  94. public SSPxDSxoxn
  95. public SPxDSxo
  96. public PDSPxox
  97. public DPSxon
  98. public PDna
  99. public Dn
  100. public DPSDaox
  101. public SPDSxaxn
  102. public PDSxa
  103. public DPx
  104. public PDSxnon
  105. public DPSnoan
  106. public PDSPoax
  107. public DPSoan
  108. public PDSax
  109. public DPSnox
  110. public DPSox
  111. public PDSxnan
  112. public DPSDonox
  113. public DPSDxox
  114. public DSPnaon
  115. public PDSPnaox
  116. public DPan
  117. public DSPDSaoxxn
  118. public SDPnox
  119. public DPSnaxn
  120. public DPSax
  121. public DSx
  122. public PDSxxn
  123. public SDPSonox
  124. public PSDPSonoxxn
  125. public DPSonon
  126. public SDPSoax
  127. public PSDPSoaxxn
  128. public SDPax
  129. public DSPDoax
  130. public PDSPDoaxxn
  131. public SDPSnoax
  132. public SSDxPDxaxn
  133. public SDxPDxa
  134. public SDPSxox
  135. public SDPnoan
  136. public DSPDxox
  137. public SDPSnaox
  138. public DPSnaon
  139. public DSPnoan
  140. public PDSPnoax
  141. public DPSxnon
  142. public PDSnoan
  143. public SPDSnoax
  144. public SDPxnan
  145. endif
  146. ROPDEF macro lbl,ne,whocares
  147. if1
  148. if MASMFLAGS and DEBUG
  149. public lbl
  150. endif
  151. ROP&ne=(offset lbl)-(offset roptable) ;;Start with offset
  152. irpc x,lbl
  153. ROP&ne = ROP&ne AND (NOT NEGATE_NEEDED)
  154. ifidn <n>,<&&x>
  155. ROP&ne = ROP&ne OR NEGATE_NEEDED ;;Show negate needed
  156. endif
  157. ifidn <P>,<&&x>
  158. ROP&ne = ROP&ne OR PATTERN_PRESENT ;;Show pattern present
  159. endif
  160. ifidn <S>,<&&x>
  161. ROP&ne = ROP&ne OR SOURCE_PRESENT ;;Show source needed
  162. endif
  163. endm
  164. ROPDEF1 ROP&ne,%((offset $)-(offset lbl))
  165. endif
  166. endm
  167. ROPDEF1 macro lbl,len
  168. if len ;;Skip 0
  169. lbl = lbl OR (ROPLen&len SHL 10) ;;Set size index
  170. endif
  171. endm
  172. public roptable
  173. roptable label word
  174. errn$ roptable ;Must be at offset 0
  175. Sn:
  176. ROPDEF Sn,0033,0008
  177. errn$ roptable ;Must be at offset 0
  178. dw ROP0000,ROP0001,ROP0002,ROP0003
  179. dw ROP0004,ROP0005,ROP0006,ROP0007
  180. dw ROP0008,ROP0009,ROP000A,ROP000B
  181. dw ROP000C,ROP000D,ROP000E,ROP000F
  182. dw ROP0010,ROP0011,ROP0012,ROP0013
  183. dw ROP0014,ROP0015,ROP0016,ROP0017
  184. dw ROP0018,ROP0019,ROP001A,ROP001B
  185. dw ROP001C,ROP001D,ROP001E,ROP001F
  186. dw ROP0020,ROP0021,ROP0022,ROP0023
  187. dw ROP0024,ROP0025,ROP0026,ROP0027
  188. dw ROP0028,ROP0029,ROP002A,ROP002B
  189. dw ROP002C,ROP002D,ROP002E,ROP002F
  190. dw ROP0030,ROP0031,ROP0032,ROP0033
  191. dw ROP0034,ROP0035,ROP0036,ROP0037
  192. dw ROP0038,ROP0039,ROP003A,ROP003B
  193. dw ROP003C,ROP003D,ROP003E,ROP003F
  194. dw ROP0040,ROP0041,ROP0042,ROP0043
  195. dw ROP0044,ROP0045,ROP0046,ROP0047
  196. dw ROP0048,ROP0049,ROP004A,ROP004B
  197. dw ROP004C,ROP004D,ROP004E,ROP004F
  198. dw ROP0050,ROP0051,ROP0052,ROP0053
  199. dw ROP0054,ROP0055,ROP0056,ROP0057
  200. dw ROP0058,ROP0059,ROP005A,ROP005B
  201. dw ROP005C,ROP005D,ROP005E,ROP005F
  202. dw ROP0060,ROP0061,ROP0062,ROP0063
  203. dw ROP0064,ROP0065,ROP0066,ROP0067
  204. dw ROP0068,ROP0069,ROP006A,ROP006B
  205. dw ROP006C,ROP006D,ROP006E,ROP006F
  206. dw ROP0070,ROP0071,ROP0072,ROP0073
  207. dw ROP0074,ROP0075,ROP0076,ROP0077
  208. dw ROP0078,ROP0079,ROP007A,ROP007B
  209. dw ROP007C,ROP007D,ROP007E,ROP007F
  210. errn$ roptable,-256 ;Must be 256 bytes afterwards
  211. db 2,3,4,5,7,9,11,13
  212. ; The actual raster operation templates follow.
  213. ;
  214. ; Entry: AL = Source byte
  215. ; DH = Pattern Bytes
  216. ; ES:DI --> Destination byte
  217. ;
  218. ; Exit: AL = Result
  219. ; DH = Pattern Bytes
  220. ; ES:DI --> Destination byte
  221. ; AH IS possibly the destination byte
  222. ;
  223. ; Uses: AL,AH,DH,DL
  224. ;-----------------------------------------------------------------
  225. ; In Wes' World:
  226. ; The actual raster operation templates follow.
  227. ;
  228. ; Entry: AX = Source word
  229. ; DX = Pattern Word
  230. ; ES:DI --> Destination word
  231. ;
  232. ; Exit: AX = Result
  233. ; DX = Pattern Word
  234. ; ES:DI --> Destination word
  235. ; BP,BX?? IS possibly the destination word
  236. ;
  237. ; Uses: AL,AH,DH,DL
  238. ;-----------------------------------------------------------------
  239. DDx:
  240. xor al,al
  241. ROPDEF DDx,0000,0042
  242. DPna:
  243. Pn:
  244. mov al,dh
  245. ROPDEF Pn,000F,0001
  246. not al
  247. PDSanon:
  248. and al,es:[di]
  249. ROPDEF DPna,000A,0329
  250. PSnon:
  251. not al
  252. DPSona:
  253. PSon:
  254. or al,dh
  255. ROPDEF PDSanon,0008,0F08
  256. ROPDEF PSon,0003,00AA
  257. ROPDEF PSnon,000C,0324
  258. PDSnaon:
  259. not al
  260. PDSaon:
  261. and al,es:[di]
  262. ROPDEF DPSona,0002,0C89
  263. or al,dh
  264. ROPDEF PDSnaon,000D,0B25
  265. ROPDEF PDSaon,0007,02C5
  266. DPon:
  267. mov al,dh
  268. PDSonon:
  269. or al,es:[di]
  270. ROPDEF DPon,0005,00A9
  271. DPSnoon:
  272. not al
  273. DPSoon:
  274. or al,dh
  275. ROPDEF PDSonon,000E,08A5
  276. DSon:
  277. PDSona:
  278. or al,es:[di]
  279. ROPDEF DPSnoon,0004,0C88
  280. ROPDEF DPSoon,0001,0289
  281. ROPDEF DSon,0011,00A6
  282. not al
  283. and al,dh
  284. ROPDEF PDSona,0010,0C85
  285. SDPxnon:
  286. mov ah,es:[di]
  287. xor ah,dh
  288. not ah
  289. or al,ah
  290. ROPDEF SDPxnon,0012,0868
  291. SSPxDSxaxn:
  292. mov dl,al
  293. SPxDSxa:
  294. mov ah,dh
  295. xor ah,al
  296. xor al,es:[di]
  297. and al,ah
  298. ROPDEF SPxDSxa,0024,0D55
  299. xor al,dl
  300. ROPDEF SSPxDSxaxn,0017,1D54
  301. PSDPSanaxx:
  302. SDPSanaxn:
  303. mov dl,al
  304. and al,dh
  305. DSna:
  306. not al
  307. and al,es:[di]
  308. ROPDEF DSna,0022,0326
  309. xor al,dl
  310. ROPDEF SDPSanaxn,0019,1CC8
  311. xor al,dh
  312. ROPDEF PSDPSanaxx,0016,5CCA
  313. PDSPanaxn:
  314. DPSana:
  315. and al,dh
  316. PDSnaxn:
  317. not al
  318. and al,es:[di]
  319. ROPDEF DPSana,002A,0CC9
  320. xor al,dh
  321. ROPDEF PDSnaxn,002D,060A
  322. ROPDEF PDSPanaxn,0025,1CC5
  323. DPSaon:
  324. PDSPaox:
  325. and al,dh
  326. PDSox:
  327. or al,es:[di]
  328. ROPDEF DPSaon,0015,02C9
  329. xor al,dh
  330. ROPDEF PDSox,001E,01A5
  331. ROPDEF PDSPaox,001A,06C5
  332. SDPSxaxn:
  333. mov dl,al
  334. DPSxa:
  335. xor al,dh
  336. and al,es:[di]
  337. ROPDEF DPSxa,0028,0369
  338. xor al,dl
  339. ROPDEF SDPSxaxn,001B,0768
  340. DSPDxaxn:
  341. mov ah,es:[di]
  342. mov dl,ah
  343. xor dl,dh
  344. and al,dl
  345. xor al,ah
  346. ROPDEF DSPDxaxn,001D,0766
  347. DPSnaa:
  348. PSna:
  349. not al
  350. DPSaan:
  351. and al,dh
  352. ROPDEF PSna,0030,032A
  353. and al,es:[di]
  354. ROPDEF DPSnaa,0020,0F09
  355. ROPDEF DPSaan,007F,03C9
  356. PSDnaon:
  357. mov ah,es:[di]
  358. not ah
  359. and al,ah
  360. or al,dh
  361. ROPDEF PSDnaon,000B,0B2A
  362. SPDnaon:
  363. mov ah,es:[di]
  364. not ah
  365. and ah,dh
  366. or al,ah
  367. ROPDEF SPDnaon,0023,0B24
  368. PDSPxaxn:
  369. xor al,dh
  370. and al,es:[di]
  371. xor al,dh
  372. ROPDEF PDSPxaxn,0027,1868
  373. SDPSaox:
  374. PSDPSaoxxn:
  375. mov dl,al
  376. and al,dh
  377. or al,es:[di]
  378. xor al,dl
  379. ROPDEF SDPSaox,0026,06C8
  380. xor al,dh
  381. ROPDEF PSDPSaoxxn,0029,16CA
  382. SSPxPDxaxn:
  383. mov dl,al
  384. SPxPDxa:
  385. mov ah,es:[di]
  386. xor ah,dh
  387. xor al,dh
  388. and al,ah
  389. ROPDEF SPxPDxa,0018,0D59
  390. xor al,dl
  391. ROPDEF SSPxPDxaxn,002B,1D58
  392. DSPDSoaxxn:
  393. SPDSoax:
  394. mov dl,al
  395. PDSoan:
  396. mov ah,es:[di]
  397. or al,ah
  398. and al,dh
  399. ROPDEF PDSoan,001F,0385
  400. xor al,dl
  401. ROPDEF SPDSoax,002C,0784
  402. xor al,ah
  403. ROPDEF DSPDSoaxxn,0079,1786
  404. PSDPxox:
  405. SDPxon:
  406. mov ah,es:[di]
  407. xor ah,dh
  408. or al,ah
  409. ROPDEF SDPxon,0021,0248
  410. xor al,dh
  411. ROPDEF PSDPxox,002E,064A
  412. PSDnoan:
  413. mov ah,es:[di]
  414. not ah
  415. or al,ah
  416. PSan:
  417. and al,dh
  418. ROPDEF PSan,003F,00EA
  419. ROPDEF PSDnoan,002F,0E2A
  420. SDPnaon:
  421. mov ah,dh
  422. not ah
  423. and ah,es:[di]
  424. or al,ah
  425. ROPDEF SDPnaon,0031,0B28
  426. SDPaon:
  427. PSDPaox:
  428. mov ah,es:[di]
  429. and ah,dh
  430. or al,ah
  431. ROPDEF SDPaon,0013,02C8
  432. xor al,dh
  433. ROPDEF PSDPaox,001C,06CA
  434. SDPSoox:
  435. mov dl,al
  436. or al,dh
  437. or al,es:[di]
  438. xor al,dl
  439. ROPDEF SDPSoox,0032,0688
  440. SPDSaox:
  441. mov dl,al
  442. and al,es:[di]
  443. or al,dh
  444. xor al,dl
  445. ROPDEF SPDSaox,0034,06C4
  446. DPSDxaxn:
  447. mov ah,es:[di]
  448. xor al,ah
  449. and al,dh
  450. xor al,ah
  451. ROPDEF DPSDxaxn,0035,1864
  452. SDPox:
  453. mov ah,es:[di]
  454. or ah,dh
  455. xor al,ah
  456. ROPDEF SDPox,0036,01A8
  457. PSDPoax:
  458. SDPoan:
  459. mov ah,es:[di]
  460. or ah,dh
  461. and al,ah
  462. ROPDEF SDPoan,0037,0388
  463. PSx:
  464. xor al,dh
  465. ROPDEF PSx,003C,004A
  466. ROPDEF PSDPoax,0038,078A
  467. SPDnox:
  468. mov ah,es:[di]
  469. not ah
  470. or ah,dh
  471. xor al,ah
  472. ROPDEF SPDnox,0039,0604
  473. SPDSxox:
  474. mov dl,al
  475. PDSxon:
  476. xor al,es:[di]
  477. or al,dh
  478. ROPDEF PDSxon,0009,0245
  479. xor al,dl
  480. ROPDEF SPDSxox,003A,0644
  481. SPDnoan:
  482. mov ah,es:[di]
  483. not ah
  484. or ah,dh
  485. and al,ah
  486. ROPDEF SPDnoan,003B,0E24
  487. SPDSonox:
  488. mov dl,al
  489. or al,es:[di]
  490. not al
  491. or al,dh
  492. xor al,dl
  493. ROPDEF SPDSonox,003D,18A4
  494. DPSxnan:
  495. xor al,dh
  496. SPDSnaox:
  497. mov dl,al ;(wasted for DPSxnan)
  498. not al
  499. and al,es:[di]
  500. ROPDEF DPSxnan,007D,0C69
  501. or al,dh
  502. xor al,dl
  503. ROPDEF SPDSnaox,003E,1B24
  504. SPDSanaxn:
  505. mov dl,al
  506. PDSana:
  507. DSan:
  508. and al,es:[di]
  509. ROPDEF DSan,0077,00E6
  510. not al
  511. and al,dh
  512. ROPDEF PDSana,0070,0CC5
  513. xor al,dl
  514. ROPDEF SPDSanaxn,0043,1CC4
  515. PSDPxaxn:
  516. SDPxa:
  517. mov ah,es:[di]
  518. xor ah,dh
  519. and al,ah
  520. ROPDEF SDPxa,0048,0368
  521. xor al,dh
  522. ROPDEF PSDPxaxn,0047,076A
  523. DSPDaox:
  524. PDSPDaoxxn:
  525. mov ah,es:[di]
  526. mov dl,ah
  527. and dl,dh
  528. or al,dl
  529. xor al,ah
  530. ROPDEF DSPDaox,0046,06C6
  531. xor al,dh
  532. ROPDEF PDSPDaoxxn,0049,16C5
  533. DPSDoax:
  534. mov ah,es:[di]
  535. or al,ah
  536. and al,dh
  537. xor al,ah
  538. ROPDEF DPSDoax,004A,0789
  539. DPSanon:
  540. and al,dh
  541. PDSnox:
  542. DSnon:
  543. not al
  544. or al,es:[di]
  545. ROPDEF DPSanon,0040,0F0A
  546. ROPDEF DSnon,0044,0328
  547. xor al,dh
  548. ROPDEF PDSnox,004B,0605
  549. SDPana:
  550. mov ah,es:[di]
  551. and ah,dh
  552. not ah
  553. and al,ah
  554. ROPDEF SDPana,004C,0CC8
  555. SSPxDSxoxn:
  556. mov dl,al
  557. SPxDSxo:
  558. mov ah,al
  559. xor ah,dh
  560. xor al,es:[di]
  561. or al,ah
  562. ROPDEF SPxDSxo,007E,0955
  563. xor al,dl
  564. ROPDEF SSPxDSxoxn,004D,1954
  565. PDSPxox:
  566. DPSxon:
  567. xor al,dh
  568. or al,es:[di]
  569. ROPDEF DPSxon,0041,0249
  570. xor al,dh
  571. ROPDEF PDSPxox,004E,0645
  572. PDna:
  573. Dn:
  574. mov al,es:[di]
  575. ROPDEF Dn,0055,0009
  576. not al
  577. and al,dh
  578. ROPDEF PDna,0050,0325
  579. DPSDaox:
  580. mov ah,es:[di]
  581. and al,ah
  582. or al,dh
  583. xor al,ah
  584. ROPDEF DPSDaox,0052,06C9
  585. SPDSxaxn:
  586. mov dl,al
  587. PDSxa:
  588. xor al,es:[di]
  589. and al,dh
  590. ROPDEF PDSxa,0060,0365
  591. xor al,dl
  592. ROPDEF SPDSxaxn,0053,0764
  593. DPx:
  594. mov al,dh
  595. PDSxnon:
  596. xor al,es:[di]
  597. ROPDEF DPx,005A,0049
  598. DPSnoan:
  599. not al
  600. PDSPoax:
  601. DPSoan:
  602. or al,dh
  603. ROPDEF PDSxnon,0006,0865
  604. PDSax:
  605. and al,es:[di]
  606. ROPDEF DPSnoan,005D,0E29
  607. ROPDEF DPSoan,0057,0389
  608. xor al,dh
  609. ROPDEF PDSPoax,0058,0785
  610. ROPDEF PDSax,0078,01E5
  611. DPSnox:
  612. not al
  613. DPSox:
  614. or al,dh
  615. PDSxnan:
  616. xor al,es:[di]
  617. ROPDEF DPSox,0056,01A9
  618. ROPDEF DPSnox,0059,0609
  619. not al
  620. and al,dh
  621. ROPDEF PDSxnan,006F,0C65
  622. DPSDonox:
  623. mov ah,es:[di]
  624. or al,ah
  625. not al
  626. or al,dh
  627. xor al,ah
  628. ROPDEF DPSDonox,005B,18A9
  629. DPSDxox:
  630. mov ah,es:[di]
  631. xor al,ah
  632. or al,dh
  633. xor al,ah
  634. ROPDEF DPSDxox,005C,0649
  635. DSPnaon:
  636. PDSPnaox:
  637. mov ah,dh
  638. not ah
  639. and al,ah
  640. or al,es:[di]
  641. ROPDEF DSPnaon,0051,0B26
  642. xor al,dh
  643. ROPDEF PDSPnaox,005E,1B29
  644. DPan:
  645. mov al,dh
  646. and al,es:[di]
  647. ROPDEF DPan,005F,00E9
  648. DSPDSaoxxn:
  649. mov dl,al
  650. mov ah,es:[di]
  651. and al,ah
  652. or al,dh
  653. xor al,dl
  654. xor al,ah
  655. ROPDEF DSPDSaoxxn,0061,16C6
  656. SDPnox:
  657. mov ah,dh
  658. not ah
  659. or ah,es:[di]
  660. xor al,ah
  661. ROPDEF SDPnox,0063,0608
  662. DPSnaxn:
  663. not al
  664. DPSax:
  665. and al,dh
  666. DSx:
  667. PDSxxn:
  668. xor al,es:[di]
  669. ROPDEF DSx,0066,0046
  670. ROPDEF DPSax,006A,01E9
  671. ROPDEF DPSnaxn,0065,0606
  672. xor al,dh
  673. ROPDEF PDSxxn,0069,0145
  674. SDPSonox:
  675. PSDPSonoxxn:
  676. mov dl,al
  677. DPSonon:
  678. or al,dh
  679. not al
  680. or al,es:[di]
  681. ROPDEF DPSonon,0054,08A9
  682. xor al,dl
  683. ROPDEF SDPSonox,0067,18A8
  684. xor al,dh
  685. ROPDEF PSDPSonoxxn,0068,58A6
  686. SDPSoax:
  687. PSDPSoaxxn:
  688. mov dl,al
  689. or al,dh
  690. and al,es:[di]
  691. xor al,dl
  692. ROPDEF SDPSoax,0064,0788
  693. xor al,dh
  694. ROPDEF PSDPSoaxxn,006B,178A
  695. SDPax:
  696. mov ah,es:[di]
  697. and ah,dh
  698. xor al,ah
  699. ROPDEF SDPax,006C,01E8
  700. DSPDoax:
  701. PDSPDoaxxn:
  702. mov ah,es:[di]
  703. mov dl,ah
  704. or ah,dh
  705. and al,ah
  706. xor al,dl
  707. ROPDEF DSPDoax,0062,0786
  708. xor al,dh
  709. ROPDEF PDSPDoaxxn,006D,1785
  710. SDPSnoax:
  711. mov dl,al
  712. not al
  713. or al,dh
  714. and al,es:[di]
  715. xor al,dl
  716. ROPDEF SDPSnoax,006E,1E28
  717. SSDxPDxaxn:
  718. mov dl,al
  719. SDxPDxa:
  720. mov ah,es:[di]
  721. xor al,ah
  722. xor ah,dh
  723. and al,ah
  724. ROPDEF SDxPDxa,0042,0D5D
  725. xor al,dl
  726. ROPDEF SSDxPDxaxn,0071,1D5C
  727. SDPSxox:
  728. mov dl,al
  729. xor al,dh
  730. or al,es:[di]
  731. xor al,dl
  732. ROPDEF SDPSxox,0072,0648
  733. SDPnoan:
  734. mov ah,dh
  735. not ah
  736. or ah,es:[di]
  737. and al,ah
  738. ROPDEF SDPnoan,0073,0E28
  739. DSPDxox:
  740. mov ah,es:[di]
  741. mov dl,ah
  742. xor ah,dh
  743. or al,ah
  744. xor al,dl
  745. ROPDEF DSPDxox,0074,0646
  746. SDPSnaox:
  747. mov dl,al
  748. DPSnaon:
  749. not al
  750. and al,dh
  751. or al,es:[di]
  752. ROPDEF DPSnaon,0045,0B29
  753. xor al,dl
  754. ROPDEF SDPSnaox,0076,1B28
  755. DSPnoan:
  756. PDSPnoax:
  757. mov ah,dh
  758. not ah
  759. or al,ah
  760. and al,es:[di]
  761. ROPDEF DSPnoan,0075,0E26
  762. DPSxnon:
  763. xor al,dh
  764. ROPDEF PDSPnoax,007A,1E29
  765. PDSnoan:
  766. SPDSnoax:
  767. mov dl,al ;(wasted for DPSxnon)
  768. not al
  769. or al,es:[di]
  770. ROPDEF DPSxnon,0014,0869
  771. and al,dh
  772. ROPDEF PDSnoan,004F,0E25
  773. xor al,dl
  774. ROPDEF SPDSnoax,007C,1E24
  775. SDPxnan:
  776. mov ah,es:[di]
  777. xor ah,dh
  778. not ah
  779. and al,ah
  780. ROPDEF SDPxnan,007B,0C68
  781. foobar macro y
  782. if @Version LT 600
  783. if2
  784. %out Size of the table is y.
  785. endif
  786. else
  787. %out Size of the table is y.
  788. endif
  789. endm
  790. foobar %(offset $)-(offset roptable)-256-8