75 lines
1.7 KiB
C++
75 lines
1.7 KiB
C++
#define CLK_DIVISOR 16
|
|
|
|
U8 *TimeStampCB(CDoc *,CDocEntry *,CTask *mem_task)
|
|
{
|
|
U8 *st=MAlloc(64,mem_task);
|
|
SPrintF(st,"%X",GetTimeStamp/CLK_DIVISOR);
|
|
return st;
|
|
}
|
|
|
|
U8 *KbdMouseTimeCB(CDoc *,CDocEntry *,CTask *mem_task)
|
|
{
|
|
U8 *st=MAlloc(64,mem_task);
|
|
SPrintF(st,"%X",KbdMouseEvtTime/CLK_DIVISOR);
|
|
return st;
|
|
}
|
|
|
|
I64 PopUpTimerOk(U8 *header=NULL,U8 *footer=NULL)
|
|
{
|
|
I64 i;
|
|
CDocEntry *doc_e;
|
|
CDoc *doc=DocNew;
|
|
if (header) DocPutS(doc,header);
|
|
doc_e=DocPutS(doc,"\nTimer:$$TX+TC,\" \"$$");
|
|
doc_e->tag_cb=&TimeStampCB;
|
|
doc_e=DocPutS(doc,"\nLatch:$$TX+TC,\" \"$$");
|
|
doc_e->tag_cb=&KbdMouseTimeCB;
|
|
DocPutS(doc,"\n$$CM+CX,0,4$$$$BT,\"OKAY\",0$$\n");
|
|
if (footer) DocPutS(doc,footer);
|
|
i=PopUpMenu(doc);
|
|
DocDel(doc);
|
|
return i;
|
|
}
|
|
|
|
I64 TimerPickedU16(U8 *msg=NULL)
|
|
{
|
|
U8 *st;
|
|
if (msg) {
|
|
st=MAlloc(StrLen(msg)+256);
|
|
StrCpy(st,msg);
|
|
} else
|
|
st=CAlloc(256);
|
|
StrCat(st,"\n\nPress $$FG,GREEN$$OKAY$$FG$$ to generate \n"
|
|
"a random num from a timer.\n");
|
|
PopUpTimerOk(st,"\n\nThe $WW,1$$LK+PU,"Holy Spirit","FI:::/TempleOS/Apps/HolySpirit/HSNotes.TXT"$ can puppet you.\n\n");
|
|
Free(st);
|
|
return KbdMouseEvtTime/CLK_DIVISOR;
|
|
}
|
|
|
|
I64 TimerPickedU32(U8 *msg=NULL)
|
|
{
|
|
I64 result=0;
|
|
result.u16[0]=TimerPickedU16(msg);
|
|
result.u16[1]=TimerPickedU16(msg);
|
|
return result;
|
|
}
|
|
|
|
|
|
CFifoU8 *rnd_nibble_fifo=FifoU8New(16);
|
|
|
|
I64 TimerPickedNibble(U8 *msg=NULL)
|
|
{
|
|
I64 result=0;
|
|
if (FifoU8Rem(rnd_nibble_fifo,&result))
|
|
return result;
|
|
else {
|
|
result=TimerPickedU16(msg);
|
|
FifoU8Ins(rnd_nibble_fifo,result.u8[0]>>4);
|
|
FifoU8Ins(rnd_nibble_fifo,result.u8[1]&15);
|
|
FifoU8Ins(rnd_nibble_fifo,result.u8[1]>>4);
|
|
FifoU8Ins(rnd_nibble_fifo,result.u8[2]&15);
|
|
FifoU8Ins(rnd_nibble_fifo,result.u8[2]>>4);
|
|
return result&15;
|
|
}
|
|
}
|