home *** CD-ROM | disk | FTP | other *** search
- INCLUDE D:\POWERU\PWRFUNC.INC
- INCLUDELIB D:\POWERU\PWRFUNC.LIB
-
- PALETTE EQU 64
- EXTERNDATA EQU PALETTE+4
-
- DOSSEG
- .386
- .MODEL USE16 SMALL
- .STACK
- .DATA
- LINELENGTH DW 320
- EYEDISTANCE2 DW 256
- ORIGO_X2 DW 159
- ORIGO_Y2 DW 99
- ORIGO_Z2 DW 0
-
- INCLUDE BENOBJ01.DAT
-
- .CODE
- STARTUP: MOV AX,DGROUP
- MOV DS,AX
- MOV AX,SS
- ADD AX,PALETTE
- MOV FS,AX
- MOV AX,13H
- INT 10H
- XOR SI,SI
- MOV CX,255
- XOR BL,BL
- SETCOLORSCIK: MOV DX,3C8H
- MOV AL,BL
- OUT DX,AL
- INC DX
- LODS BYTE PTR FS:[SI]
- OUT DX,AL
- LODS BYTE PTR FS:[SI]
- OUT DX,AL
- LODS BYTE PTR FS:[SI]
- OUT DX,AL
- INC BL
- LOOP SETCOLORSCIK
- MOV CX,1500
- XOR SI,SI
- MOV AX,SS
- ADD AX,EXTERNDATA
- MOV FS,AX
- RESETPDCIK: MOV AX,HEADDATA[SI]
- MOV FS:[SI],AX
- MOV FS:[SI+3000],WORD PTR 0FFFFH
- ADD SI,2
- LOOP RESETPDCIK
- MOV AX,0A000H
- MOV ES,AX
- MOV AX,8
- MOV CX,0
- MOV DX,512
- INT 33H
- RET
-
- SETHEADDATA: PUSHA
- XOR SI,SI
- MOV AX,-80
- MOV CX,5
- SETZPOSCIK: PUSH CX
- MOV BX,-90
- MOV CX,10
- SETYPOSCIK: PUSH CX
- MOV DX,-90
- MOV CX,10
- SETXPOSCIK: MOV HEADDATA[SI],DX
- MOV FS:[SI],DX
- MOV HEADDATA[SI+2],BX
- MOV FS:[SI+2],BX
- MOV HEADDATA[SI+4],AX
- MOV FS:[SI+4],AX
- ADD SI,6
- ADD DX,20
- LOOP SETXPOSCIK
- POP CX
- ADD BX,20
- LOOP SETYPOSCIK
- POP CX
- ADD AX,40
- LOOP SETZPOSCIK
- POPA
- RET
-
- PUTHEAD: PUSHA
- MOV CX,500
- XOR SI,SI
- MOV BP,3000
- PUTHEADCIK: MOV DI,FS:[BP]
- MOV BYTE PTR ES:[DI],0
- PUSH BP
- MOV AX,FS:[SI]
- MOV BX,EYEDISTANCE2
- IMUL BX
- ADD BX,FS:[SI+4]
- ADD BX,ORIGO_Z2
- IDIV BX
- MOV BP,BX
- ADD AX,ORIGO_X2
- MOV BX,0FFFFH
- CMP AX,319
- JA NOPUTPIXEL
- MOV DI,AX
- MOV AX,FS:[SI+2]
- MOV BX,EYEDISTANCE2
- IMUL BX
- MOV BX,BP
- IDIV BX
- ADD AX,ORIGO_Y2
- MOV BX,0FFFFH
- CMP AX,199
- JA NOPUTPIXEL
- MOV DX,AX
- SHL DX,8
- SHL AX,6
- ADD AX,DX
-
- ADD DI,AX
- MOV BX,DI
- MOV AX,BP
- SHR AX,3
- INC AL
- MOV ES:[DI],AL
- NOPUTPIXEL: POP BP
- MOV FS:[BP],DI
- ADD SI,6
- ADD BP,2
- DEC CX
- JNZ PUTHEADCIK
- POPA
- RET
-
- START: CALL STARTUP
- CALL SETHEADDATA
-
- MAINCIK: MOV DX,3DAH
- WAITR: IN AL,DX
- TEST AL,8
- JZ WAITR
-
- CALL RTIMEON
-
- CALL PUTHEAD
- MOV AX,3
- INT 33H
- MOV ORIGO_Z2,512
- SUB ORIGO_Z2,DX
- XOR AX,AX
- XOR SI,SI
- XOR CX,CX
-
- TEST BX,1
- JZ NOLEFTPUSH
- MOV AX,1
- NOLEFTPUSH: TEST BX,2
- JZ NORIGHTPUSH
- MOV CX,1
- NORIGHTPUSH: TEST BX,4
- JZ NOMEDPUSH
- MOV SI,1
- NOMEDPUSH: MOV BX,SI
- CALL ADDROTATEANGLE
- MOV CX,500
- MOV AX,DS
- LEA SI,HEADDATA
- MOV BX,SS
- ADD BX,EXTERNDATA
- XOR DI,DI
- CALL ROTATEPOINTS
- CALL RTIMEOFF
- MOV AH,1
- INT 16H
- JZ NOEXIT
- XOR AH,AH
- INT 16H
- MOV AX,3
- INT 10H
- MOV AH,4CH
- INT 21H
- NOEXIT: JMP MAINCIK
-
- END START
-