I was lucky, I found a very simple and unoptimised version of that effect. The code is posted below, but before that, an explanation of how that technique works is needed, perhaps not so much for you, but for anyone else who comes across this listing.
You have a small screen open, 320 * 240.
All that is needed is to loop down the screen.
The good news is that no 3D calculations are necessary and as you have no sin/cos, you will need to have a table of integers.
As you loop down the screen you are generating 4 x co-ords (or grabbing 4 x co-ords from a table).. something simple like;
X1 = (99 * SIN (THETA)) + 100
X2 = (99 * SIN (THETA+90)) + 100
X3 = (99 * SIN (THETA+180)) + 100
X4 = (99 * SIN (THETA+270)) + 100
add some offset to theta as you move down the screen to make the bar twist.
Then it is simply a matter of doing a very basic hidden line check..
For example if the line is X2 - X3 only draw it if X3>X2
This would work with lots of different kinds of shapes, not just 4 sided ones.
Make the effect look even better by making the lines brighter the longer they are, this gives the illusion of light sourcing

Even better still, you can use a basic linear interpolation to map a texture.. I have sources that do this if you want to see them.
Any further questions, please do ask

' ROTATING BAR THING BY SHOCKWAVE (C) 2006 --
'
'
'--------------------------------------------
'===============================================================================
' DEFINE CONSTANTS AND INITIALISE STUFF;
'===============================================================================
OPTION STATIC
OPTION EXPLICIT
CONST XRES = 640 : ' SCREEN WIDTH.
CONST YRES = 480 : ' SCREEN HEIGHT.
CONST XCENT = XRES / 2 : ' X CENTRE OF SCREEN.
CONST YCENT = YRES / 2 : ' Y CENTRE OF SCREEN.
CONST RAD_2_DEG AS DOUBLE = ( (4*ATN(1)) / 180 )
#define ptc_win
#Include Once "tinyptc.bi"
DIM SHARED AS UINTEGER BUFFER ( XRES * YRES ) :' THE SCREEN BUFFER.
DECLARE SUB TWISTY()
DIM SHARED GADD AS DOUBLE
'===============================================================================
' OPEN THE SCREEN;
'===============================================================================
IF ( PTC_OPEN ( "TWISTER!", XRES, YRES ) = 0 ) THEN
END -1
END IF
'===============================================================================
' MAIN LOOP;
'===============================================================================
DO
TWISTY
PTC_UPDATE@BUFFER(0)
ERASE BUFFER
LOOP UNTIL INKEY$=CHR$(27)
END
SUB TWISTY()
DIM AS INTEGER X1,X2,X3,X4,L,V,RR
DIM AS INTEGER Y1,Y2,Y3,Y4
DIM Q AS INTEGER
DIM AS DOUBLE QQ,VVV
VVV=.7*SIN(GADD*RAD_2_DEG)
GADD=GADD+.5
FOR Q =0 TO YRES-1
X1=XCENT+(150*SIN((GADD+QQ)*RAD_2_DEG))
X2=XCENT+(150*SIN((GADD+90+QQ)*RAD_2_DEG))
X3=XCENT+(150*SIN((GADD+180+QQ)*RAD_2_DEG))
X4=XCENT+(150*SIN((GADD+270+QQ)*RAD_2_DEG))
IF X2>X1 THEN
V=X2-X1
RR=RGB(0,0,V)
FOR L=X1 TO X2
BUFFER(XRES*Q+(L))=RR
NEXT
END IF
IF X3>X2 THEN
V=X3-X2
RR=RGB(V,0,0)
FOR L=X2 TO X3
BUFFER(XRES*Q+(L))=RR
NEXT
END IF
IF X4>X3 THEN
V=X4-X3
RR=RGB(V,0,V)
FOR L=X3 TO X4
BUFFER(XRES*Q+(L))=RR
NEXT
END IF
IF X1>X4 THEN
V=X1-X4
RR=RGB(0,V,0)
FOR L=X4 TO X1
BUFFER(XRES*Q+(L))=RR
NEXT
END IF
QQ=QQ+VVV
NEXT Q
END SUB