home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / meniwaru / yam3d86.lib < prev   
Text File  |  1990-06-14  |  13KB  |  549 lines

  1. $GBCALL    MACRO    FNC
  2.     PUSH    AX
  3.     MOV    AH,FNC
  4.     INT    92H
  5.     POP    AX
  6.     ENDM
  7. ;    
  8. $GDRAW    MACRO
  9.     PUSH    AX
  10.     MOV    AH,8FH
  11.     INT    92H
  12.     POP    AX
  13.     ENDM
  14. ;
  15. $GCOLOR    MACRO
  16.     PUSH    AX
  17.     MOV    AH,0
  18.     MOV    WORD PTR [DI],12
  19.     MOV    [DI+ 2],5000H+4*32+2
  20.     MOV    [DI+ 4],AX
  21.     MOV    [DI+ 6],5000H+8*32+2
  22.     MOV    [DI+ 8],AX
  23.     MOV    [DI+10],5000H+14*32+2
  24.     MOV    [DI+12],AX
  25.     $GDRAW
  26.     POP    AX
  27.     ENDM
  28. ;
  29. $GMODE    MACRO    MD
  30.     MOV    WORD PTR [DI  ],8    
  31.     MOV    WORD PTR [DI+2],6000H+32+6
  32.     MOV    WORD PTR [DI+4],2
  33.     MOV    WORD PTR [DI+6],2
  34.     MOV    BYTE PTR [DI+8],BYTE PTR MD
  35.     MOV    BYTE PTR [DI+9],0
  36.     $GDRAW
  37.     ENDM
  38. ;
  39. $PRESET    MACRO
  40.     $GMODE    00H
  41.     ENDM
  42. $AND    MACRO
  43.     $GMODE    01H
  44.     ENDM
  45. $PSET    MACRO
  46.     $GMODE    03H
  47.     ENDM
  48. $XOR    MACRO
  49.     $GMODE    06H
  50.     ENDM
  51. $OR    MACRO
  52.     $GMODE    07H
  53.     ENDM
  54. $NOT    MACRO
  55.     $GMODE    0CH
  56.     ENDM
  57. ;
  58. $PALET    MACRO    SRC,DST
  59.     PUSH    BX
  60.     PUSH    AX
  61.     MOV    WORD PTR [DI  ],6
  62.     MOV    WORD PTR [DI+2],SRC
  63.     MOV    BX,DST
  64.     SHL    BL,1
  65.     SHL    BL,1
  66.     MOV    AH,[BX+PALTBL]
  67.     MOV    [DI+4],AH
  68.     MOV    AH,[BX+PALTBL+1]
  69.     MOV    [DI+5],AH
  70.     MOV    AH,[BX+PALTBL+2]
  71.     MOV    [DI+6],AH
  72.     MOV    AH,[BX+PALTBL+3]
  73.     MOV    [DI+7],AH
  74.     $GBCALL    83H
  75.     POP    AX
  76.     POP    BX
  77.     ENDM
  78. ;
  79. $GBINIT    MACRO
  80.     PUSH    AX
  81.     MOV    AH,80H
  82.     INT    92H
  83.     POP    AX
  84.     ENDM
  85. ;
  86. $DSPINI    MACRO
  87.     PUSH    CX
  88.     PUSH    DX
  89.     MOV    DX,640
  90.     MOV    CX,400
  91.     $GBCALL    81H
  92.     POP    DX
  93.     POP    CX
  94.     ENDM
  95. ;
  96. $GCLS    MACRO
  97.     $GBCALL    84H
  98.     ENDM
  99. ;
  100. $LINE    MACRO
  101.     MOV    WORD PTR [DI   ],10
  102.     MOV    WORD PTR [DI+2 ],4000H+32+8
  103.     MOV             [DI+4 ],AX
  104.     MOV             [DI+6 ],BX
  105.     MOV             [DI+8 ],CX
  106.     MOV             [DI+10],DX
  107.     $GDRAW
  108.     ENDM
  109. ;
  110. $POINT    MACRO
  111.     MOV    WORD PTR [DI   ],6
  112.     MOV    WORD PTR [DI+2 ],4000H+32*3+4
  113.     MOV             [DI+4 ],CX
  114.     MOV             [DI+6 ],DX
  115.     $GDRAW
  116.     ENDM
  117. ;
  118. DATA    SEGMENT    PUBLIC
  119. PALTBL    DB    0,    0,    0,    0
  120.     DB    0,    0,    0,    128
  121.     DB    0,    128,    0,    0
  122.     DB    0,    128,    0,    128
  123.     DB    0,    0,    128,    0
  124.     DB    0,    0,    128,    128
  125.     DB    0,    128,    128,    0
  126.     DB    0,    128,    128,    128
  127.     DB    0,    64,    64,    64
  128.     DB    0,    0,    0,    255
  129.     DB    0,    255,    0,    0
  130.     DB    0,    255,    0,    255
  131.     DB    0,    0,    255,    0
  132.     DB    0,    0,    255,    255
  133.     DB    0,    255,    255,    0
  134.     DB    0,    255,    255,    255
  135. DATA    ENDS
  136. ;
  137. ;
  138. ;
  139. $K_INIT    MACRO
  140.     PUSH    AX
  141.     MOV    AH,0
  142.     INT    90H
  143.     POP    AX
  144.     ENDM
  145. ;
  146. $K_READ    MACRO
  147.     PUSH    AX
  148.     MOV    AH,0AH
  149.     INT    90H
  150.     POP    AX
  151.     ENDM
  152. ;
  153. $K_CHK    MACRO    CODE
  154.     LOCAL    $K_CHK0,$K_CHK1
  155.     PUSH    BX
  156.     MOV    AH,CODE
  157.     AND    AH,7
  158.     INC    AH
  159.     MOV    AL,1
  160. $K_CHK0:DEC    AH
  161.     JE    $K_CHK1
  162.     SHL    AL,1
  163.     JMP    $K_CHK0
  164. $K_CHK1:MOV    BX,CODE
  165.     SHR    BL,1
  166.     SHR    BL,1
  167.     SHR    BL,1
  168.     AND    AL,[BX+DI]
  169.     POP    BX
  170.     ENDM
  171. ;
  172. $K_BUFC    MACRO
  173.     PUSH    AX
  174.     MOV    AX,0600H
  175.     INT    90H
  176.     POP    AX
  177.     ENDM
  178. ;
  179. $K_COFF    MACRO
  180.     PUSH    AX
  181.     MOV    AX,0501H
  182.     INT    90H
  183.     POP    AX
  184.     ENDM
  185. ;
  186. ;
  187. ;
  188. $C_INIT    MACRO
  189.     PUSH    AX
  190.     MOV    AH,00H
  191.     INT    91H
  192.     POP    AX
  193.     ENDM
  194. ;
  195. $C_CLS    MACRO
  196.     PUSH    AX
  197.     MOV    AH,02H
  198.     INT    91H
  199.     POP    AX
  200.     ENDM
  201. ;
  202. $C_COFF    MACRO
  203.     PUSH    AX
  204.     MOV    AX,0B01H
  205.     INT    91H
  206.     POP    AX
  207.     ENDM
  208. ;
  209. $LOCATE    MACRO    CX,CY
  210.     PUSH    AX
  211.     PUSH    DX
  212.     MOV    AH,0DH
  213.     MOV    DH,CY
  214.     MOV    DL,CX
  215.     INT    91H
  216.     POP    DX
  217.     POP    AX
  218.     ENDM
  219. ;
  220. $PRINT    MACRO
  221.     PUSH    AX
  222.     MOV    AH,1EH
  223.     INT    91H
  224.     POP    AX
  225.     ENDM
  226. ;
  227. ;
  228. ;
  229. $SIN    MACRO
  230.     LOCAL    $SIN1
  231.     PUSH    BX
  232.     PUSH    DX
  233.     AND    BX,1023
  234.     CMP    BX,512
  235.     JC    $SIN1
  236.     NEG    AX
  237.     SUB    BX,512
  238. $SIN1:    SHL    BX,1
  239.     MOV    BX,[BX+SINTBL]
  240.     IMUL    BX
  241.     MOV    BX,16384
  242.     IDIV    BX
  243.     POP    DX
  244.     POP    BX
  245.     ENDM
  246. ;
  247. $COS    MACRO
  248.     LOCAL    $COS1
  249.     PUSH    BX
  250.     PUSH    DX
  251.     NEG    BX
  252.     ADD    BX,256
  253.     AND    BX,1023
  254.     CMP    BX,512
  255.     JC    $COS1
  256.     NEG    AX
  257.     SUB    BX,512
  258. $COS1:    SHL    BX,1
  259.     MOV    BX,[BX+SINTBL]
  260.     IMUL    BX
  261.     MOV    BX,16384
  262.     IDIV    BX
  263.     POP    DX
  264.     POP    BX
  265.     ENDM
  266. ;
  267. $TAN    MACRO
  268.     LOCAL    $TAN1
  269.     PUSH    BX
  270.     PUSH    DX
  271.     AND    BX,1023
  272.     CMP    BX,512
  273.     JC    $TAN1
  274.     NEG    AX
  275.     NEG    BX
  276.     ADD    BX,1024
  277. $TAN1:    SHL    BX,1
  278.     MOV    BX,[BX+TANTBL]
  279.     IMUL    BX
  280.     MOV    BX,16384
  281.     IDIV    BX
  282.     POP    DX
  283.     POP    BX
  284.     ENDM
  285. ;
  286. ;
  287. DATA    SEGMENT    PUBLIC
  288. SINTBL    DW     0D,  101D,  201D,  302D,  402D,  503D,  603D,  704D
  289.     DW   804D,  904D, 1005D, 1105D, 1205D, 1306D, 1406D, 1506D
  290.     DW  1606D, 1706D, 1806D, 1906D, 2006D, 2105D, 2205D, 2305D
  291.     DW  2404D, 2503D, 2603D, 2702D, 2801D, 2900D, 2999D, 3098D
  292.     DW  3196D, 3295D, 3393D, 3492D, 3590D, 3688D, 3786D, 3883D
  293.     DW  3981D, 4078D, 4176D, 4273D, 4370D, 4467D, 4563D, 4660D
  294.     DW  4756D, 4852D, 4948D, 5044D, 5139D, 5235D, 5330D, 5425D
  295.     DW  5520D, 5614D, 5708D, 5803D, 5897D, 5990D, 6084D, 6177D
  296.     DW  6270D, 6363D, 6455D, 6547D, 6639D, 6731D, 6823D, 6914D
  297.     DW  7005D, 7096D, 7186D, 7276D, 7366D, 7456D, 7545D, 7635D
  298.     DW  7723D, 7812D, 7900D, 7988D, 8076D, 8163D, 8250D, 8337D
  299.     DW  8423D, 8509D, 8595D, 8680D, 8765D, 8850D, 8935D, 9019D
  300.     DW  9102D, 9186D, 9269D, 9352D, 9434D, 9516D, 9598D, 9679D
  301.     DW  9760D, 9841D, 9921D,10001D,10080D,10159D,10238D,10316D
  302.     DW 10394D,10471D,10549D,10625D,10702D,10778D,10853D,10928D
  303.     DW 11003D,11077D,11151D,11224D,11297D,11370D,11442D,11514D
  304.     DW 11585D,11656D,11727D,11797D,11866D,11935D,12004D,12072D
  305.     DW 12140D,12207D,12274D,12340D,12406D,12472D,12537D,12601D
  306.     DW 12665D,12729D,12792D,12854D,12916D,12978D,13039D,13100D
  307.     DW 13160D,13219D,13279D,13337D,13395D,13453D,13510D,13567D
  308.     DW 13623D,13678D,13733D,13788D,13842D,13896D,13949D,14001D
  309.     DW 14053D,14104D,14155D,14206D,14256D,14305D,14354D,14402D
  310.     DW 14449D,14497D,14543D,14589D,14635D,14680D,14724D,14768D
  311.     DW 14811D,14854D,14896D,14937D,14978D,15019D,15059D,15098D
  312.     DW 15137D,15175D,15213D,15250D,15286D,15322D,15357D,15392D
  313.     DW 15426D,15460D,15493D,15525D,15557D,15588D,15619D,15649D
  314.     DW 15679D,15707D,15736D,15763D,15791D,15817D,15843D,15868D
  315.     DW 15893D,15917D,15941D,15964D,15986D,16008D,16029D,16049D
  316.     DW 16069D,16088D,16107D,16125D,16143D,16160D,16176D,16192D
  317.     DW 16207D,16221D,16235D,16248D,16261D,16273D,16284D,16295D
  318.     DW 16305D,16315D,16324D,16332D,16340D,16347D,16353D,16359D
  319.     DW 16364D,16369D,16373D,16376D,16379D,16381D,16383D,16384D
  320.     DW 16384D,16384D,16383D,16381D,16379D,16376D,16373D,16369D
  321.     DW 16364D,16359D,16353D,16347D,16340D,16332D,16324D,16315D
  322.     DW 16305D,16295D,16284D,16273D,16261D,16248D,16235D,16221D
  323.     DW 16207D,16192D,16176D,16160D,16143D,16125D,16107D,16088D
  324.     DW 16069D,16049D,16029D,16008D,15986D,15964D,15941D,15917D
  325.     DW 15893D,15868D,15843D,15817D,15791D,15763D,15736D,15707D
  326.     DW 15679D,15649D,15619D,15588D,15557D,15525D,15493D,15460D
  327.     DW 15426D,15392D,15357D,15322D,15286D,15250D,15213D,15175D
  328.     DW 15137D,15098D,15059D,15019D,14978D,14937D,14896D,14854D
  329.     DW 14811D,14768D,14724D,14680D,14635D,14589D,14543D,14497D
  330.     DW 14449D,14402D,14354D,14305D,14256D,14206D,14155D,14104D
  331.     DW 14053D,14001D,13949D,13896D,13842D,13788D,13733D,13678D
  332.     DW 13623D,13567D,13510D,13453D,13395D,13337D,13279D,13219D
  333.     DW 13160D,13100D,13039D,12978D,12916D,12854D,12792D,12729D
  334.     DW 12665D,12601D,12537D,12472D,12406D,12340D,12274D,12207D
  335.     DW 12140D,12072D,12004D,11935D,11866D,11797D,11727D,11656D
  336.     DW 11585D,11514D,11442D,11370D,11297D,11224D,11151D,11077D
  337.     DW 11003D,10928D,10853D,10778D,10702D,10625D,10549D,10471D
  338.     DW 10394D,10316D,10238D,10159D,10080D,10001D, 9921D, 9840D
  339.     DW  9760D, 9679D, 9598D, 9516D, 9434D, 9352D, 9269D, 9186D
  340.     DW  9102D, 9019D, 8935D, 8850D, 8765D, 8680D, 8595D, 8509D
  341.     DW  8423D, 8337D, 8250D, 8163D, 8076D, 7988D, 7900D, 7812D
  342.     DW  7723D, 7635D, 7545D, 7456D, 7366D, 7276D, 7186D, 7096D
  343.     DW  7005D, 6914D, 6823D, 6731D, 6639D, 6547D, 6455D, 6363D
  344.     DW  6270D, 6177D, 6084D, 5990D, 5897D, 5803D, 5708D, 5614D
  345.     DW  5520D, 5425D, 5330D, 5235D, 5139D, 5044D, 4948D, 4852D
  346.     DW  4756D, 4660D, 4563D, 4467D, 4370D, 4273D, 4176D, 4078D
  347.     DW  3981D, 3883D, 3786D, 3688D, 3590D, 3492D, 3393D, 3295D
  348.     DW  3196D, 3098D, 2999D, 2900D, 2801D, 2702D, 2603D, 2503D
  349.     DW  2404D, 2305D, 2205D, 2105D, 2006D, 1906D, 1806D, 1706D
  350.     DW  1606D, 1506D, 1406D, 1306D, 1205D, 1105D, 1005D,  904D
  351.     DW   804D,  703D,  603D,  503D,  402D,  302D,  201D,  101D
  352. ;
  353. TANTBL    DW     0D,  101D,  201D,  302D,  402D,  503D,  603D,  704D
  354.     DW   805D,  906D, 1007D, 1108D, 1209D, 1310D, 1411D, 1512D
  355.     DW  1614D, 1715D, 1817D, 1919D, 2021D, 2123D, 2225D, 2328D
  356.     DW  2430D, 2533D, 2636D, 2739D, 2843D, 2947D, 3050D, 3155D
  357.     DW  3259D, 3364D, 3469D, 3574D, 3679D, 3785D, 3891D, 3997D
  358.     DW  4104D, 4211D, 4318D, 4426D, 4534D, 4642D, 4751D, 4860D
  359.     DW  4970D, 5080D, 5190D, 5301D, 5413D, 5524D, 5636D, 5749D
  360.     DW  5862D, 5976D, 6090D, 6205D, 6320D, 6436D, 6552D, 6669D
  361.     DW  6786D, 6905D, 7023D, 7143D, 7263D, 7383D, 7504D, 7626D
  362.     DW  7749D, 7872D, 7997D, 8121D, 8247D, 8373D, 8501D, 8629D
  363.     DW  8757D, 8887D, 9018D, 9149D, 9281D, 9415D, 9549D, 9684D
  364.     DW  9820D, 9957D,10096D,10235D,10375D,10516D,10659D,10803D
  365.     DW 10947D,11093D,11241D,11389D,11539D,11690D,11842D,11996D
  366.     DW 12151D,12308D,12466D,12625D,12786D,12949D,13113D,13279D
  367.     DW 13446D,13615D,13786D,13959D,14133D,14309D,14487D,14667D
  368.     DW 14850D,15034D,15220D,15408D,15599D,15792D,15987D,16184D
  369.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  370.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  371.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  372.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  373.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  374.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  375.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  376.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  377.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  378.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  379.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  380.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  381.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  382.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  383.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  384.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  385.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  386.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  387.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  388.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  389.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  390.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  391.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  392.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  393.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  394.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  395.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  396.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  397.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  398.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  399.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  400.     DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
  401.     DW 16384D,16184D,15987D,15792D,15599D,15408D,15220D,15034D
  402.     DW 14850D,14667D,14487D,14309D,14133D,13959D,13786D,13615D
  403.     DW 13446D,13279D,13113D,12949D,12786D,12625D,12466D,12308D
  404.     DW 12151D,11996D,11842D,11690D,11539D,11389D,11241D,11093D
  405.     DW 10947D,10803D,10659D,10516D,10375D,10235D,10096D,-9957D
  406.     DW -9820D,-9684D,-9549D,-9415D,-9281D,-9149D,-9018D,-8887D
  407.     DW -8757D,-8629D,-8501D,-8373D,-8247D,-8121D,-7997D,-7872D
  408.     DW -7749D,-7626D,-7504D,-7383D,-7263D,-7143D,-7023D,-6905D
  409.     DW -6786D,-6669D,-6552D,-6436D,-6320D,-6205D,-6090D,-5976D
  410.     DW -5862D,-5749D,-5636D,-5524D,-5413D,-5301D,-5190D,-5080D
  411.     DW -4970D,-4860D,-4751D,-4642D,-4534D,-4426D,-4318D,-4211D
  412.     DW -4104D,-3997D,-3891D,-3785D,-3679D,-3574D,-3469D,-3364D
  413.     DW -3259D,-3155D,-3050D,-2947D,-2843D,-2739D,-2636D,-2533D
  414.     DW -2430D,-2328D,-2225D,-2123D,-2021D,-1919D,-1817D,-1715D
  415.     DW -1614D,-1512D,-1411D,-1310D,-1209D,-1108D,-1007D, -906D
  416.     DW  -805D, -704D, -603D, -503D, -402D, -302D, -201D, -101D
  417. ;
  418. DATA    ENDS
  419. ;
  420. ;
  421. $ROLL    MACRO
  422.     PUSH    AX
  423. ;
  424.     PUSH    CX
  425.     MOV    AX,CX
  426.     $COS
  427.     MOV    CX,AX
  428. ;
  429.     MOV    AX,DX
  430.     $SIN
  431.     SUB    CX,AX    ;;CX=X'
  432. ;
  433.     POP    AX    ;;AX=old X
  434.     PUSH    CX    ;;STACK=X'
  435. ;
  436.     $SIN
  437.     MOV    CX,AX
  438. ;
  439.     MOV    AX,DX
  440.     $COS
  441.     ADD    CX,AX    ;;CX=Y'
  442. ;
  443.     MOV    DX,CX
  444.     POP    CX    ;;POP from STACK AX=X'
  445.     POP    AX
  446.     ENDM
  447. ;
  448. ;    
  449. ;
  450. $3DROLL    MACRO
  451.     PUSH    BX
  452.     PUSH    CX
  453.     PUSH    DX
  454. ;
  455.     MOV    CX,[DI  ]    ;;XZ平面
  456.     MOV    DX,[DI+4]
  457.     MOV    BX,[DI+6]
  458.     $ROLL
  459.     MOV    [DI  ],CX
  460.     MOV    [DI+4],DX
  461. ;
  462.     MOV    CX,[DI+4]    ;;ZY平面
  463.     MOV    DX,[DI+2]
  464.     MOV    BX,[DI+8]
  465.     $ROLL
  466.     MOV    [DI+4],CX
  467.     MOV    [DI+2],DX
  468. ;
  469.     MOV    CX,[DI  ]    ;;XY平面
  470.     MOV    DX,[DI+2]
  471.     MOV    BX,[DI+10]
  472.     $ROLL
  473.     MOV    [DI  ],CX
  474.     MOV    [DI+2],DX
  475. ;
  476.     POP    DX
  477.     POP    CX
  478.     POP    BX
  479.     ENDM
  480. ;
  481. ;
  482. ;
  483. $MKFRM    MACRO    RQNO
  484.     MOV    WORD PTR [DI  ],4
  485.     MOV    WORD PTR [DI+2],RQNO
  486.     MOV    WORD PTR [DI+4],0
  487.     ENDM
  488. ;
  489. $ADFRM    MACRO
  490.     PUSH    BX
  491.     MOV                    BX,[DI]
  492.     MOV             [BX+DI+2],CX
  493.     MOV             [BX+DI+4],DX
  494.     ADD    WORD PTR [   DI+4],4
  495.     ADD    WORD PTR [   DI  ],4
  496.     POP    BX
  497.     ENDM
  498. ;
  499. $CLIPX    MACRO
  500.     LOCAL    $CLIPXO
  501.     PUSH    BX
  502.     PUSH    DX
  503. ;
  504.     MOV    AX,[DI+6]
  505.     SUB    AX,[DI+2]
  506.     CWD
  507.     MOV    BX,[DI+8]
  508.     SUB    BX,[DI  ]
  509. ;
  510.     IMUL    BX        ;(Y2-Y1)*(CPX-X1)
  511. ;
  512.     MOV    BX,[DI+4]
  513.     SUB    BX,[DI  ]
  514.     JE    $CLIPXO
  515.     IDIV    BX        ;(Y2-Y1)*(CPX-X1)/(X2-X1)
  516. ;
  517.     ADD    AX,[DI+2]    ;(Y2-Y1)*(CPX-X1)/(X2-X1)+Y1
  518. ;
  519. $CLIPXO:POP    DX
  520.     POP    BX
  521.     ENDM
  522. ;
  523. ;
  524. ;
  525. $CLIPY    MACRO
  526.     LOCAL    $CLIPYO
  527.     PUSH    BX
  528.     PUSH    DX
  529. ;
  530.     MOV    AX,[DI+4]
  531.     SUB    AX,[DI  ]
  532.     CWD
  533.     MOV    BX,[DI+8]
  534.     SUB    BX,[DI+2]
  535. ;
  536.     IMUL    BX        ;(X2-X1)*(CPY-Y1)
  537. ;
  538.     MOV    BX,[DI+6]
  539.     SUB    BX,[DI+2]
  540.     JE    $CLIPYO
  541.     IDIV    BX        ;(X2-X1)*(CPY-Y1)/(Y2-Y1)
  542. ;
  543.     ADD    AX,[DI  ]    ;(X2-X1)*(CPY-Y1)/(Y2-Y1)+X1
  544. ;
  545. $CLIPYO:POP    DX
  546.     POP    BX
  547.     ENDM
  548. ;
  549.