📄 dsp1proc.asm
字号:
mov [Op0CA],ax
mov ax,[DSP1VARS+2]
mov [Op0CX1],ax
mov ax,[DSP1VARS+4]
mov [Op0CY1],ax
pushad
call DSPOp0C
popad
mov ax,[Op0CX2]
mov [DSP1RET],ax
mov ax,[Op0CY2]
mov [DSP1RET+2],ax
mov byte[DSP1RLeft],2
pop eax
ret
DSP1_1C: ; 3D Coordinate Rotation
push eax
mov ax,[DSP1VARS]
mov [Op1CZ],ax
mov ax,[DSP1VARS+2]
mov [Op1CX],ax
mov ax,[DSP1VARS+4]
mov [Op1CY],ax
mov ax,[DSP1VARS+6]
mov [Op1CXBR],ax
mov ax,[DSP1VARS+8]
mov [Op1CYBR],ax
mov ax,[DSP1VARS+10]
mov [Op1CZBR],ax
pushad
call DSPOp1C
popad
mov ax,[Op1CXAR]
mov [DSP1RET],ax
mov ax,[Op1CYAR]
mov [DSP1RET+2],ax
mov ax,[Op1CZAR]
mov [DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_02: ; Vector Size
or byte[DSPDet],10h
push eax
;Op02FX dw 0
;Op02FY dw 0
;Op02FZ dw 0
;Op02LFE dw 0
;Op02LES dw 0
;Op02AAS dw 0
;Op02AZS dw 0
mov ax,[DSP1VARS]
mov [Op02FX],ax
mov ax,[DSP1VARS+2]
mov [Op02FY],ax
mov ax,[DSP1VARS+4]
mov [Op02FZ],ax
mov ax,[DSP1VARS+6]
mov [Op02LFE],ax
mov ax,[DSP1VARS+8]
mov [Op02LES],ax
mov ax,[DSP1VARS+10]
mov [Op02AAS],ax
mov ax,[DSP1VARS+12]
mov [Op02AZS],ax
pushad
call DSPOp02
popad
;Op02VOF dw 0
;Op02VVA dw 0
;Op02CX dw 0
;Op02CY dw 0
mov ax,[Op02VOF]
mov [DSP1RET],ax
mov ax,[Op02VVA]
mov [DSP1RET+2],ax
mov ax,[Op02CX]
mov [DSP1RET+4],ax
mov ax,[Op02CY]
mov [DSP1RET+6],ax
mov byte[DSP1RLeft],4
pop eax
ret
mov eax,dsp1array
add eax,[dsp1ptr]
push ebx
mov byte[eax],02h
mov bx,[Op02FX]
mov [eax+1],bx
mov bx,[Op02FY]
mov [eax+3],bx
mov bx,[Op02FZ]
mov [eax+5],bx
mov bx,[Op02LFE]
mov [eax+7],bx
mov bx,[Op02LES]
mov [eax+9],bx
mov bx,[Op02AAS]
mov [eax+11],bx
mov bx,[Op02AZS]
mov [eax+13],bx
mov bx,[Op02VOF]
mov [eax+15],bx
mov bx,[Op02VVA]
mov [eax+17],bx
mov bx,[Op02CX]
mov [eax+19],bx
mov bx,[Op02CY]
mov [eax+21],bx
pop ebx
add dword[dsp1ptr],23
DSP1_0A: ; Raster Data Calculation via DMA
mov byte[DSP1COp],0Ah
or byte[DSPDet],20h
push eax
mov ax,[DSP1VARS]
mov [Op0AVS],ax
pushad
call DSPOp0A
popad
mov ax,[Op0AA]
mov [DSP1RET],ax
mov ax,[Op0AB]
mov [DSP1RET+2],ax
mov ax,[Op0AC]
mov [DSP1RET+4],ax
mov ax,[Op0AD]
mov [DSP1RET+6],ax
mov byte[DSP1RLeft],4
pop eax
ret
DSP1_06: ; Object Projection Calculation
or byte[DSPDet],40h
push eax
mov ax,[DSP1VARS]
mov [Op06X],ax
mov ax,[DSP1VARS+2]
mov [Op06Y],ax
mov ax,[DSP1VARS+4]
mov [Op06Z],ax
pushad
call DSPOp06
popad
mov ax,[Op06H]
mov word[DSP1RET],ax
mov ax,[Op06V]
mov word[DSP1RET+2],ax
mov ax,[Op06S]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
mov eax,dsp1array
add eax,[dsp1ptr]
push ebx
mov byte[eax],06h
mov bx,[Op06X]
mov [eax+1],bx
mov bx,[Op06Y]
mov [eax+3],bx
mov bx,[Op06Z]
mov [eax+5],bx
mov bx,[Op06H]
mov [eax+7],bx
mov bx,[Op06V]
mov [eax+9],bx
mov bx,[Op06S]
mov [eax+11],bx
pop ebx
add dword[dsp1ptr],13
DSP1_0E: ; Coordinate Calculation of a point onscreen
push eax
mov ax,[DSP1VARS]
mov [Op0EH],ax
mov ax,[DSP1VARS+2]
mov [Op0EV],ax
pushad
call DSPOp0E
popad
mov ax,[Op0EX]
mov word[DSP1RET],ax
mov ax,[Op0EY]
mov word[DSP1RET+2],ax
mov byte[DSP1RLeft],2
pop eax
ret
DSP1_01: ; Set Attitude Matrix A
push eax
mov ax,[DSP1VARS]
mov [Op01m],ax
mov ax,[DSP1VARS+2]
mov [Op01Zr],ax
mov ax,[DSP1VARS+4]
mov [Op01Xr],ax
mov ax,[DSP1VARS+6]
mov [Op01Yr],ax
pushad
call DSPOp01
popad
pop eax
ret
DSP1_11: ; Set Attitude Matrix B
push eax
mov ax,[DSP1VARS]
mov [Op11m],ax
mov ax,[DSP1VARS+2]
mov [Op11Zr],ax
mov ax,[DSP1VARS+4]
mov [Op11Xr],ax
mov ax,[DSP1VARS+6]
mov [Op11Yr],ax
pushad
call DSPOp11
popad
pop eax
ret
DSP1_21: ; Set Attitude Matrix C
push eax
mov ax,[DSP1VARS]
mov [Op21m],ax
mov ax,[DSP1VARS+2]
mov [Op21Zr],ax
mov ax,[DSP1VARS+4]
mov [Op21Xr],ax
mov ax,[DSP1VARS+6]
mov [Op21Yr],ax
pushad
call DSPOp21
popad
pop eax
ret
DSP1_0D: ; Convert from global to object coords Matrix A
push eax
mov ax,[DSP1VARS]
mov [Op0DX],ax
mov ax,[DSP1VARS+2]
mov [Op0DY],ax
mov ax,[DSP1VARS+4]
mov [Op0DZ],ax
pushad
call DSPOp0D
popad
mov ax,[Op0DF]
mov word[DSP1RET],ax
mov ax,[Op0DL]
mov word[DSP1RET+2],ax
mov ax,[Op0DU]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_1D: ; Convert from global to object coords Matrix B
push eax
mov ax,[DSP1VARS]
mov [Op1DX],ax
mov ax,[DSP1VARS+2]
mov [Op1DY],ax
mov ax,[DSP1VARS+4]
mov [Op1DZ],ax
pushad
call DSPOp1D
popad
mov ax,[Op1DF]
mov word[DSP1RET],ax
mov ax,[Op1DL]
mov word[DSP1RET+2],ax
mov ax,[Op1DU]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_2D: ; Convert from global to object coords Matrix C
push eax
mov ax,[DSP1VARS]
mov [Op2DX],ax
mov ax,[DSP1VARS+2]
mov [Op2DY],ax
mov ax,[DSP1VARS+4]
mov [Op2DZ],ax
pushad
call DSPOp2D
popad
mov ax,[Op2DF]
mov word[DSP1RET],ax
mov ax,[Op2DL]
mov word[DSP1RET+2],ax
mov ax,[Op2DU]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_03: ; Convert from object to global coords Matrix A
push eax
mov ax,[DSP1VARS]
mov [Op03F],ax
mov ax,[DSP1VARS+2]
mov [Op03L],ax
mov ax,[DSP1VARS+4]
mov [Op03U],ax
pushad
call DSPOp03
popad
mov ax,[Op03X]
mov word[DSP1RET],ax
mov ax,[Op03Y]
mov word[DSP1RET+2],ax
mov ax,[Op03Z]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_13: ; Convert from object to global coords Matrix B
push eax
mov ax,[DSP1VARS]
mov [Op13F],ax
mov ax,[DSP1VARS+2]
mov [Op13L],ax
mov ax,[DSP1VARS+4]
mov [Op13U],ax
pushad
call DSPOp13
popad
mov ax,[Op13X]
mov word[DSP1RET],ax
mov ax,[Op13Y]
mov word[DSP1RET+2],ax
mov ax,[Op13Z]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_23: ; Convert from object to global coords Matrix C
push eax
mov ax,[DSP1VARS]
mov [Op23F],ax
mov ax,[DSP1VARS+2]
mov [Op23L],ax
mov ax,[DSP1VARS+4]
mov [Op23U],ax
pushad
call DSPOp23
popad
mov ax,[Op23X]
mov word[DSP1RET],ax
mov ax,[Op23Y]
mov word[DSP1RET+2],ax
mov ax,[Op23Z]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
DSP1_0B: ; Calculation of inner product Matrix A
push eax
mov ax,[DSP1VARS]
mov [Op0BX],ax
mov ax,[DSP1VARS+2]
mov [Op0BY],ax
mov ax,[DSP1VARS+4]
mov [Op0BZ],ax
pushad
call DSPOp0B
popad
mov ax,[Op0BS]
mov word[DSP1RET],ax
mov byte[DSP1RLeft],1
pop eax
ret
DSP1_1B: ; Calculation of inner product Matrix B
push eax
mov ax,[DSP1VARS]
mov [Op1BX],ax
mov ax,[DSP1VARS+2]
mov [Op1BY],ax
mov ax,[DSP1VARS+4]
mov [Op1BZ],ax
pushad
call DSPOp1B
popad
mov ax,[Op1BS]
mov word[DSP1RET],ax
mov byte[DSP1RLeft],1
pop eax
ret
DSP1_2B: ; Calculation of inner product Matrix C
push eax
mov ax,[DSP1VARS]
mov [Op2BX],ax
mov ax,[DSP1VARS+2]
mov [Op2BY],ax
mov ax,[DSP1VARS+4]
mov [Op2BZ],ax
pushad
call DSPOp2B
popad
mov ax,[Op2BS]
mov word[DSP1RET],ax
mov byte[DSP1RLeft],1
pop eax
ret
DSP1_14: ; 3D angle rotation
push eax
mov ax,[DSP1VARS]
mov [Op14Zr],ax
mov ax,[DSP1VARS+2]
mov [Op14Xr],ax
mov ax,[DSP1VARS+4]
mov [Op14Yr],ax
mov ax,[DSP1VARS+6]
mov [Op14U],ax
mov ax,[DSP1VARS+8]
mov [Op14F],ax
mov ax,[DSP1VARS+10]
mov [Op14L],ax
pushad
call DSPOp14
popad
mov ax,[Op14Zrr]
mov word[DSP1RET],ax
mov ax,[Op14Xrr]
mov word[DSP1RET+2],ax
mov ax,[Op14Yrr]
mov word[DSP1RET+4],ax
mov byte[DSP1RLeft],3
pop eax
ret
NEWSYM Dsp1ProcAsmEnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -