Here's what I've got so far. I've skipped points 1, 5 and 6 (I'll add them later), but the rest are covered.
Code:
MACRO MyStairC
savesettings
selsave
color 16
fstyle Solid
lstyle Solid
gv vStepWidth 10
gv vStepWidth ^DEnter the stairway width [10]:
gv vStepDepth 1
gv vStepDepth ^DEnter the step spacing [1]:
lwidth vStepWidth
iferr MSC_Done
gp pCenter ^DCenter:
iferr MSC_Done
gp pStart ^DStarting (bottom) point:
iferr MSC_Done
arcs pCenter pStart ^D
gp pEndPt @0,0
selbyp
outlineb
gdist vRadius pCenter pStart
gbrng vStartAngle pCenter pStart
gbrng vEndAngle pCenter pEndPt
gv vStepAngle vStepDepth*180/(3.141592654*vRadius)
ifn vStartAngle-vEndAngle MSC_SkipAdjust
gv vEndAngle vEndAngle+360
:MSC_SkipAdjust
gn nNumSteps (vEndAngle-vStartAngle)/vStepAngle
gv vStepAngle (vEndAngle-vStartAngle)/nNumSteps
gv vEdgeAngle vStartAngle
color 0
:MSC_Step
gv vRiserAngle vEdgeAngle+vStepAngle
ifp vRiserAngle-vEndAngle MSC_Done
gv vShadowAngle vRiserAngle-vStepAngle/3
lwidth vStepWidth
fstyle solid 20 Bitmap
arcr pCenter vRadius vShadowAngle vRiserAngle ESC
fstyle solid 10 Bitmap
arcr pCenter vRadius vStartAngle vRiserAngle ESC
lwidth 0
line ref pCenter <vRiserAngle,(vRadius-vStepWidth/2) <vRiserAngle,vStepWidth;
gv vEdgeAngle vRiserAngle
goto MSC_Step
:MSC_Done
selrest
getsettings
ENDM
Note that my variable names are self explanatory and labels are prefixed to avoid conflicts. Rather than draw each step separately (and twice), I draw a common staircase background first, then put the shading and edge lines on top of it for effect. As to the optional railings (point 5), I'd prefer that they were in this macro so they could be inserted before the MSC_Step loop for depth shading and step shadows/edges can be narrowed so they don't overlap. What sheet/layer should I draw this in?

--

Dalton "who thinks code readability is important as documentation" Spence