257 lines
2.9 KiB
NASM
257 lines
2.9 KiB
NASM
MOV $0xFF0000,%SP
|
|
#Set up vector mode
|
|
MOV $0xFFFC,%R4l
|
|
MOV $0x00FF,%R4h
|
|
MOV $0xFFFF,%R1l
|
|
MOV $0xFFFF,%R1h
|
|
MOV %R1,(%R4)
|
|
CALL $RENDER
|
|
MOV $>DATA_START,%R0l
|
|
MOV $<DATA_START,%R0h
|
|
MOV (%R0),%R1
|
|
MOV $0x3f4c,%R4h #0.8
|
|
MOV $0xcccd,%R4l
|
|
FADD %R4,%R1
|
|
MOV %R1,(%R0)
|
|
CALL $RENDER
|
|
MOV $>DATA_START,%R0l
|
|
MOV $<DATA_START,%R0h
|
|
MOV (%R0),%R1
|
|
MOV $0x3f4c,%R4h #0.8
|
|
MOV $0xcccd,%R4l
|
|
FADD %R4,%R1
|
|
MOV %R1,(%R0)
|
|
CALL $RENDER
|
|
HALT
|
|
|
|
:RENDER
|
|
MOV $>DATA_START,%R0l
|
|
MOV $<DATA_START,%R0h
|
|
MOV $0x000D,%R7l
|
|
MOV $0x0000,%R7h
|
|
MOV $0x0001,%R6l
|
|
MOV $0x0000,%R6h
|
|
MOV $0x0004,%R5l
|
|
MOV $0x0000,%R5h
|
|
MOV $0xFFFC,%R4l
|
|
MOV $0x00FF,%R4h
|
|
MOV $0x0002,%R1l
|
|
MOV $0x0000,%R1h #Clear the frame
|
|
MOV %R1,(%R4)
|
|
:RENDER_LOOP
|
|
MOV $0xFFFF,%R1l
|
|
MOV $0xFFFF,%R1h
|
|
MOV %R1,(%R4)
|
|
#Read in a point R1:x R2:y R3:z
|
|
MOV $0x3f4c,%R4h #0.8
|
|
MOV $0xcccd,%R4l
|
|
MOV (%R0),%R1
|
|
ADD %R5,%R0
|
|
MOV (%R0),%R2
|
|
ADD %R5,%R0
|
|
MOV (%R0),%R3
|
|
ADD %R5,%R0
|
|
FSUB %R4,%R1
|
|
FSUB %R4,%R2
|
|
|
|
MOV $0x3e99,%R4h
|
|
MOV $0x999a,%R4l
|
|
FADD %R4,%R3
|
|
FADD %R4,%R3
|
|
FADD %R4,%R1
|
|
FADD %R4,%R2
|
|
FDIV %R3,%R1
|
|
FDIV %R3,%R2
|
|
MOV $0xFFFC,%R4l
|
|
MOV $0x00FF,%R4h
|
|
MOV %R1,(%R4)
|
|
MOV %R2,(%R4)
|
|
|
|
MOV $0x3f4c,%R4h #0.8
|
|
MOV $0xcccd,%R4l
|
|
MOV (%R0),%R1
|
|
ADD %R5,%R0
|
|
MOV (%R0),%R2
|
|
ADD %R5,%R0
|
|
MOV (%R0),%R3
|
|
ADD %R5,%R0
|
|
FSUB %R4,%R1
|
|
FSUB %R4,%R2
|
|
|
|
MOV $0x3e99,%R4h
|
|
MOV $0x999a,%R4l
|
|
FADD %R4,%R3
|
|
FADD %R4,%R3
|
|
FADD %R4,%R1
|
|
FADD %R4,%R2
|
|
FDIV %R3,%R1
|
|
FDIV %R3,%R2
|
|
MOV $0xFFFC,%R4l
|
|
MOV $0x00FF,%R4h
|
|
MOV %R1,(%R4)
|
|
MOV %R2,(%R4)
|
|
|
|
SUB %R6,%R7
|
|
JMP,NZ $RENDER_LOOP
|
|
MOV $0x0003,%R1l
|
|
MOV $0x0000,%R1h #Display the frame
|
|
MOV %R1,(%R4)
|
|
RET
|
|
|
|
|
|
|
|
:DATA_START
|
|
#0,0,0
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
#0,0,1
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
|
|
|
|
|
|
#0,0,0
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
#1,0,0
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#0,0,0
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
#0,1,0
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#1,1,1
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
#1,1,0
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#1,1,1
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
#1,0,1
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
|
|
|
|
|
|
#1,1,1
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
#0,1,1
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
|
|
|
|
#0,1,1
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
#0,1,0
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#0,1,1
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
|
|
#0,0,1
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
|
|
|
|
|
|
#0,1,0
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
#1,1,0
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#0,1,0
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
#1,1,0
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#0,0,1
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
|
|
#1,0,1
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|
|
|
|
|
|
|
|
#1,0,0
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
#1,1,0
|
|
DDW $0x3f800000
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
|
|
|
|
|
|
#1,0,0
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x00000000
|
|
|
|
#1,0,1
|
|
DDW $0x3f800000
|
|
DDW $0x00000000
|
|
DDW $0x3f800000
|