I realized that some of the code is not really mine to keep, so in the interest of helping out the community I'm going to start releasing snippets of code as I finish them.
If I have time I'll comment it out.
Menu code (Thanks runer!):
:..
:ref(0,,-1,)
:{T}→C
:3-43-10
:While 1
:+43+10→B
:1-85-12
:While 1
:+85+12→A
:Pt-Change(,B,C-1→C//32768*8+8+Pic00M)
:!If C//32768
:Text({ºB-1}{^r}+A+2)
:DrawF {55*12+{L6}}{^r}+1→{55*12+{L6}}{^r}+1►Dec
:End
:End!If A-85
:End!If B-43
:→A→B→D
:conj({L6},{L1},55*12)
:16896→C
:{-}960→E
:26→M
:Lbl LM
:conj(GDB01M,{L3},768)
:While 1
:conj(GDB00M,{L6},768)
:getKey→K
:!If -1
:If M-44
:+44+9→M
:End
:End
:!If +1-4
:If M-26
:+26-9→M
:End
:End
:sub(MSR)
:!If K-54
:Goto MS
:End
:!If +54-9
:.Menu selected
:Lbl MS
:!If M-26
:Goto NW
:End
:!If -9
:Goto LD
:End
:Goto QT
:End
:!If +9-15
:Goto QT
:End
:sub(DL1)
:sub(MSR)
:End
:Lbl NW
:While 1
:getKey
:!If -1
:If B-4
:+4+1→B
:-256
:End
:End
:!If +1-2
:If A
:-1→A
:-256
:End
:End
:!If +2-3
:If A-7
:+7+1→A
:-256
:End
:End
:!If +3-4
:If B
:-1→B
:-256
:End
:End
:!If +4-54
:Goto LS
:End
:!If +54-9
:Lbl LS
:If {T}>(B*8+A→F)
:!If GetCalc(Str01M)
:GetCalc(Str01M,1)
:End
:→S
:F+1→{S}
:Goto LL
:End
:End
:!If +9-15
:Goto LM
:End
:sub(DL2)
:End
:Lbl LD
:!If GetCalc(Str01M)→S
:sub(MS,Str02M)
:While 1
:sub(DGR)
:EndIf getKey
:Goto LM
:Else
:Goto LL
:End
:.Display levels 1
:Lbl DL1
:Lbl DL1
:!If E+960
:Goto DGR
:End
:C-E→C
:E-32→E
:Goto DL
:
:.Display levels 2
:Lbl DL2
:If E
:+32→E
:+C→C
:End
:
:.Display levels
:Lbl DL
:If +960
:conj({L1},{ºC+1}{^r}*12→F-24+{L6},66*12-F)
:End
:Text({ºC+1}{^r}-9+{E}0300)
:DrawF Str03M
:sub(DRI,A*12,B*10real(ºA+1)+Creal(ºA-1),11,-1)
:sub(DGR)
:Goto DRI
:
:.Menu selection rectangle
:Lbl MSR
:sub(DRI,5,M,30,10)
:Return