home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
ms_dos
/
meniwaru
/
yam3d86.lib
< prev
Wrap
Text File
|
1990-06-14
|
13KB
|
549 lines
$GBCALL MACRO FNC
PUSH AX
MOV AH,FNC
INT 92H
POP AX
ENDM
;
$GDRAW MACRO
PUSH AX
MOV AH,8FH
INT 92H
POP AX
ENDM
;
$GCOLOR MACRO
PUSH AX
MOV AH,0
MOV WORD PTR [DI],12
MOV [DI+ 2],5000H+4*32+2
MOV [DI+ 4],AX
MOV [DI+ 6],5000H+8*32+2
MOV [DI+ 8],AX
MOV [DI+10],5000H+14*32+2
MOV [DI+12],AX
$GDRAW
POP AX
ENDM
;
$GMODE MACRO MD
MOV WORD PTR [DI ],8
MOV WORD PTR [DI+2],6000H+32+6
MOV WORD PTR [DI+4],2
MOV WORD PTR [DI+6],2
MOV BYTE PTR [DI+8],BYTE PTR MD
MOV BYTE PTR [DI+9],0
$GDRAW
ENDM
;
$PRESET MACRO
$GMODE 00H
ENDM
$AND MACRO
$GMODE 01H
ENDM
$PSET MACRO
$GMODE 03H
ENDM
$XOR MACRO
$GMODE 06H
ENDM
$OR MACRO
$GMODE 07H
ENDM
$NOT MACRO
$GMODE 0CH
ENDM
;
$PALET MACRO SRC,DST
PUSH BX
PUSH AX
MOV WORD PTR [DI ],6
MOV WORD PTR [DI+2],SRC
MOV BX,DST
SHL BL,1
SHL BL,1
MOV AH,[BX+PALTBL]
MOV [DI+4],AH
MOV AH,[BX+PALTBL+1]
MOV [DI+5],AH
MOV AH,[BX+PALTBL+2]
MOV [DI+6],AH
MOV AH,[BX+PALTBL+3]
MOV [DI+7],AH
$GBCALL 83H
POP AX
POP BX
ENDM
;
$GBINIT MACRO
PUSH AX
MOV AH,80H
INT 92H
POP AX
ENDM
;
$DSPINI MACRO
PUSH CX
PUSH DX
MOV DX,640
MOV CX,400
$GBCALL 81H
POP DX
POP CX
ENDM
;
$GCLS MACRO
$GBCALL 84H
ENDM
;
$LINE MACRO
MOV WORD PTR [DI ],10
MOV WORD PTR [DI+2 ],4000H+32+8
MOV [DI+4 ],AX
MOV [DI+6 ],BX
MOV [DI+8 ],CX
MOV [DI+10],DX
$GDRAW
ENDM
;
$POINT MACRO
MOV WORD PTR [DI ],6
MOV WORD PTR [DI+2 ],4000H+32*3+4
MOV [DI+4 ],CX
MOV [DI+6 ],DX
$GDRAW
ENDM
;
DATA SEGMENT PUBLIC
PALTBL DB 0, 0, 0, 0
DB 0, 0, 0, 128
DB 0, 128, 0, 0
DB 0, 128, 0, 128
DB 0, 0, 128, 0
DB 0, 0, 128, 128
DB 0, 128, 128, 0
DB 0, 128, 128, 128
DB 0, 64, 64, 64
DB 0, 0, 0, 255
DB 0, 255, 0, 0
DB 0, 255, 0, 255
DB 0, 0, 255, 0
DB 0, 0, 255, 255
DB 0, 255, 255, 0
DB 0, 255, 255, 255
DATA ENDS
;
;
;
$K_INIT MACRO
PUSH AX
MOV AH,0
INT 90H
POP AX
ENDM
;
$K_READ MACRO
PUSH AX
MOV AH,0AH
INT 90H
POP AX
ENDM
;
$K_CHK MACRO CODE
LOCAL $K_CHK0,$K_CHK1
PUSH BX
MOV AH,CODE
AND AH,7
INC AH
MOV AL,1
$K_CHK0:DEC AH
JE $K_CHK1
SHL AL,1
JMP $K_CHK0
$K_CHK1:MOV BX,CODE
SHR BL,1
SHR BL,1
SHR BL,1
AND AL,[BX+DI]
POP BX
ENDM
;
$K_BUFC MACRO
PUSH AX
MOV AX,0600H
INT 90H
POP AX
ENDM
;
$K_COFF MACRO
PUSH AX
MOV AX,0501H
INT 90H
POP AX
ENDM
;
;
;
$C_INIT MACRO
PUSH AX
MOV AH,00H
INT 91H
POP AX
ENDM
;
$C_CLS MACRO
PUSH AX
MOV AH,02H
INT 91H
POP AX
ENDM
;
$C_COFF MACRO
PUSH AX
MOV AX,0B01H
INT 91H
POP AX
ENDM
;
$LOCATE MACRO CX,CY
PUSH AX
PUSH DX
MOV AH,0DH
MOV DH,CY
MOV DL,CX
INT 91H
POP DX
POP AX
ENDM
;
$PRINT MACRO
PUSH AX
MOV AH,1EH
INT 91H
POP AX
ENDM
;
;
;
$SIN MACRO
LOCAL $SIN1
PUSH BX
PUSH DX
AND BX,1023
CMP BX,512
JC $SIN1
NEG AX
SUB BX,512
$SIN1: SHL BX,1
MOV BX,[BX+SINTBL]
IMUL BX
MOV BX,16384
IDIV BX
POP DX
POP BX
ENDM
;
$COS MACRO
LOCAL $COS1
PUSH BX
PUSH DX
NEG BX
ADD BX,256
AND BX,1023
CMP BX,512
JC $COS1
NEG AX
SUB BX,512
$COS1: SHL BX,1
MOV BX,[BX+SINTBL]
IMUL BX
MOV BX,16384
IDIV BX
POP DX
POP BX
ENDM
;
$TAN MACRO
LOCAL $TAN1
PUSH BX
PUSH DX
AND BX,1023
CMP BX,512
JC $TAN1
NEG AX
NEG BX
ADD BX,1024
$TAN1: SHL BX,1
MOV BX,[BX+TANTBL]
IMUL BX
MOV BX,16384
IDIV BX
POP DX
POP BX
ENDM
;
;
DATA SEGMENT PUBLIC
SINTBL DW 0D, 101D, 201D, 302D, 402D, 503D, 603D, 704D
DW 804D, 904D, 1005D, 1105D, 1205D, 1306D, 1406D, 1506D
DW 1606D, 1706D, 1806D, 1906D, 2006D, 2105D, 2205D, 2305D
DW 2404D, 2503D, 2603D, 2702D, 2801D, 2900D, 2999D, 3098D
DW 3196D, 3295D, 3393D, 3492D, 3590D, 3688D, 3786D, 3883D
DW 3981D, 4078D, 4176D, 4273D, 4370D, 4467D, 4563D, 4660D
DW 4756D, 4852D, 4948D, 5044D, 5139D, 5235D, 5330D, 5425D
DW 5520D, 5614D, 5708D, 5803D, 5897D, 5990D, 6084D, 6177D
DW 6270D, 6363D, 6455D, 6547D, 6639D, 6731D, 6823D, 6914D
DW 7005D, 7096D, 7186D, 7276D, 7366D, 7456D, 7545D, 7635D
DW 7723D, 7812D, 7900D, 7988D, 8076D, 8163D, 8250D, 8337D
DW 8423D, 8509D, 8595D, 8680D, 8765D, 8850D, 8935D, 9019D
DW 9102D, 9186D, 9269D, 9352D, 9434D, 9516D, 9598D, 9679D
DW 9760D, 9841D, 9921D,10001D,10080D,10159D,10238D,10316D
DW 10394D,10471D,10549D,10625D,10702D,10778D,10853D,10928D
DW 11003D,11077D,11151D,11224D,11297D,11370D,11442D,11514D
DW 11585D,11656D,11727D,11797D,11866D,11935D,12004D,12072D
DW 12140D,12207D,12274D,12340D,12406D,12472D,12537D,12601D
DW 12665D,12729D,12792D,12854D,12916D,12978D,13039D,13100D
DW 13160D,13219D,13279D,13337D,13395D,13453D,13510D,13567D
DW 13623D,13678D,13733D,13788D,13842D,13896D,13949D,14001D
DW 14053D,14104D,14155D,14206D,14256D,14305D,14354D,14402D
DW 14449D,14497D,14543D,14589D,14635D,14680D,14724D,14768D
DW 14811D,14854D,14896D,14937D,14978D,15019D,15059D,15098D
DW 15137D,15175D,15213D,15250D,15286D,15322D,15357D,15392D
DW 15426D,15460D,15493D,15525D,15557D,15588D,15619D,15649D
DW 15679D,15707D,15736D,15763D,15791D,15817D,15843D,15868D
DW 15893D,15917D,15941D,15964D,15986D,16008D,16029D,16049D
DW 16069D,16088D,16107D,16125D,16143D,16160D,16176D,16192D
DW 16207D,16221D,16235D,16248D,16261D,16273D,16284D,16295D
DW 16305D,16315D,16324D,16332D,16340D,16347D,16353D,16359D
DW 16364D,16369D,16373D,16376D,16379D,16381D,16383D,16384D
DW 16384D,16384D,16383D,16381D,16379D,16376D,16373D,16369D
DW 16364D,16359D,16353D,16347D,16340D,16332D,16324D,16315D
DW 16305D,16295D,16284D,16273D,16261D,16248D,16235D,16221D
DW 16207D,16192D,16176D,16160D,16143D,16125D,16107D,16088D
DW 16069D,16049D,16029D,16008D,15986D,15964D,15941D,15917D
DW 15893D,15868D,15843D,15817D,15791D,15763D,15736D,15707D
DW 15679D,15649D,15619D,15588D,15557D,15525D,15493D,15460D
DW 15426D,15392D,15357D,15322D,15286D,15250D,15213D,15175D
DW 15137D,15098D,15059D,15019D,14978D,14937D,14896D,14854D
DW 14811D,14768D,14724D,14680D,14635D,14589D,14543D,14497D
DW 14449D,14402D,14354D,14305D,14256D,14206D,14155D,14104D
DW 14053D,14001D,13949D,13896D,13842D,13788D,13733D,13678D
DW 13623D,13567D,13510D,13453D,13395D,13337D,13279D,13219D
DW 13160D,13100D,13039D,12978D,12916D,12854D,12792D,12729D
DW 12665D,12601D,12537D,12472D,12406D,12340D,12274D,12207D
DW 12140D,12072D,12004D,11935D,11866D,11797D,11727D,11656D
DW 11585D,11514D,11442D,11370D,11297D,11224D,11151D,11077D
DW 11003D,10928D,10853D,10778D,10702D,10625D,10549D,10471D
DW 10394D,10316D,10238D,10159D,10080D,10001D, 9921D, 9840D
DW 9760D, 9679D, 9598D, 9516D, 9434D, 9352D, 9269D, 9186D
DW 9102D, 9019D, 8935D, 8850D, 8765D, 8680D, 8595D, 8509D
DW 8423D, 8337D, 8250D, 8163D, 8076D, 7988D, 7900D, 7812D
DW 7723D, 7635D, 7545D, 7456D, 7366D, 7276D, 7186D, 7096D
DW 7005D, 6914D, 6823D, 6731D, 6639D, 6547D, 6455D, 6363D
DW 6270D, 6177D, 6084D, 5990D, 5897D, 5803D, 5708D, 5614D
DW 5520D, 5425D, 5330D, 5235D, 5139D, 5044D, 4948D, 4852D
DW 4756D, 4660D, 4563D, 4467D, 4370D, 4273D, 4176D, 4078D
DW 3981D, 3883D, 3786D, 3688D, 3590D, 3492D, 3393D, 3295D
DW 3196D, 3098D, 2999D, 2900D, 2801D, 2702D, 2603D, 2503D
DW 2404D, 2305D, 2205D, 2105D, 2006D, 1906D, 1806D, 1706D
DW 1606D, 1506D, 1406D, 1306D, 1205D, 1105D, 1005D, 904D
DW 804D, 703D, 603D, 503D, 402D, 302D, 201D, 101D
;
TANTBL DW 0D, 101D, 201D, 302D, 402D, 503D, 603D, 704D
DW 805D, 906D, 1007D, 1108D, 1209D, 1310D, 1411D, 1512D
DW 1614D, 1715D, 1817D, 1919D, 2021D, 2123D, 2225D, 2328D
DW 2430D, 2533D, 2636D, 2739D, 2843D, 2947D, 3050D, 3155D
DW 3259D, 3364D, 3469D, 3574D, 3679D, 3785D, 3891D, 3997D
DW 4104D, 4211D, 4318D, 4426D, 4534D, 4642D, 4751D, 4860D
DW 4970D, 5080D, 5190D, 5301D, 5413D, 5524D, 5636D, 5749D
DW 5862D, 5976D, 6090D, 6205D, 6320D, 6436D, 6552D, 6669D
DW 6786D, 6905D, 7023D, 7143D, 7263D, 7383D, 7504D, 7626D
DW 7749D, 7872D, 7997D, 8121D, 8247D, 8373D, 8501D, 8629D
DW 8757D, 8887D, 9018D, 9149D, 9281D, 9415D, 9549D, 9684D
DW 9820D, 9957D,10096D,10235D,10375D,10516D,10659D,10803D
DW 10947D,11093D,11241D,11389D,11539D,11690D,11842D,11996D
DW 12151D,12308D,12466D,12625D,12786D,12949D,13113D,13279D
DW 13446D,13615D,13786D,13959D,14133D,14309D,14487D,14667D
DW 14850D,15034D,15220D,15408D,15599D,15792D,15987D,16184D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16384D,16384D,16384D,16384D,16384D,16384D,16384D
DW 16384D,16184D,15987D,15792D,15599D,15408D,15220D,15034D
DW 14850D,14667D,14487D,14309D,14133D,13959D,13786D,13615D
DW 13446D,13279D,13113D,12949D,12786D,12625D,12466D,12308D
DW 12151D,11996D,11842D,11690D,11539D,11389D,11241D,11093D
DW 10947D,10803D,10659D,10516D,10375D,10235D,10096D,-9957D
DW -9820D,-9684D,-9549D,-9415D,-9281D,-9149D,-9018D,-8887D
DW -8757D,-8629D,-8501D,-8373D,-8247D,-8121D,-7997D,-7872D
DW -7749D,-7626D,-7504D,-7383D,-7263D,-7143D,-7023D,-6905D
DW -6786D,-6669D,-6552D,-6436D,-6320D,-6205D,-6090D,-5976D
DW -5862D,-5749D,-5636D,-5524D,-5413D,-5301D,-5190D,-5080D
DW -4970D,-4860D,-4751D,-4642D,-4534D,-4426D,-4318D,-4211D
DW -4104D,-3997D,-3891D,-3785D,-3679D,-3574D,-3469D,-3364D
DW -3259D,-3155D,-3050D,-2947D,-2843D,-2739D,-2636D,-2533D
DW -2430D,-2328D,-2225D,-2123D,-2021D,-1919D,-1817D,-1715D
DW -1614D,-1512D,-1411D,-1310D,-1209D,-1108D,-1007D, -906D
DW -805D, -704D, -603D, -503D, -402D, -302D, -201D, -101D
;
DATA ENDS
;
;
$ROLL MACRO
PUSH AX
;
PUSH CX
MOV AX,CX
$COS
MOV CX,AX
;
MOV AX,DX
$SIN
SUB CX,AX ;;CX=X'
;
POP AX ;;AX=old X
PUSH CX ;;STACK=X'
;
$SIN
MOV CX,AX
;
MOV AX,DX
$COS
ADD CX,AX ;;CX=Y'
;
MOV DX,CX
POP CX ;;POP from STACK AX=X'
POP AX
ENDM
;
;
;
$3DROLL MACRO
PUSH BX
PUSH CX
PUSH DX
;
MOV CX,[DI ] ;;XZ平面
MOV DX,[DI+4]
MOV BX,[DI+6]
$ROLL
MOV [DI ],CX
MOV [DI+4],DX
;
MOV CX,[DI+4] ;;ZY平面
MOV DX,[DI+2]
MOV BX,[DI+8]
$ROLL
MOV [DI+4],CX
MOV [DI+2],DX
;
MOV CX,[DI ] ;;XY平面
MOV DX,[DI+2]
MOV BX,[DI+10]
$ROLL
MOV [DI ],CX
MOV [DI+2],DX
;
POP DX
POP CX
POP BX
ENDM
;
;
;
$MKFRM MACRO RQNO
MOV WORD PTR [DI ],4
MOV WORD PTR [DI+2],RQNO
MOV WORD PTR [DI+4],0
ENDM
;
$ADFRM MACRO
PUSH BX
MOV BX,[DI]
MOV [BX+DI+2],CX
MOV [BX+DI+4],DX
ADD WORD PTR [ DI+4],4
ADD WORD PTR [ DI ],4
POP BX
ENDM
;
$CLIPX MACRO
LOCAL $CLIPXO
PUSH BX
PUSH DX
;
MOV AX,[DI+6]
SUB AX,[DI+2]
CWD
MOV BX,[DI+8]
SUB BX,[DI ]
;
IMUL BX ;(Y2-Y1)*(CPX-X1)
;
MOV BX,[DI+4]
SUB BX,[DI ]
JE $CLIPXO
IDIV BX ;(Y2-Y1)*(CPX-X1)/(X2-X1)
;
ADD AX,[DI+2] ;(Y2-Y1)*(CPX-X1)/(X2-X1)+Y1
;
$CLIPXO:POP DX
POP BX
ENDM
;
;
;
$CLIPY MACRO
LOCAL $CLIPYO
PUSH BX
PUSH DX
;
MOV AX,[DI+4]
SUB AX,[DI ]
CWD
MOV BX,[DI+8]
SUB BX,[DI+2]
;
IMUL BX ;(X2-X1)*(CPY-Y1)
;
MOV BX,[DI+6]
SUB BX,[DI+2]
JE $CLIPYO
IDIV BX ;(X2-X1)*(CPY-Y1)/(Y2-Y1)
;
ADD AX,[DI ] ;(X2-X1)*(CPY-Y1)/(Y2-Y1)+X1
;
$CLIPYO:POP DX
POP BX
ENDM
;