Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
HolySpirit.txt161 linesDownload Raw Back to God
1 2#help_index "God"3U8 *TimeStampCB(CDoc *,CDocEntry *,CTask *mem_task)4{5  U8 *st=MAlloc(64,mem_task);6  StrPrint(st,"%X",GetTSC>>GOD_BAD_BITS);7  return st;8}9 10U8 *KbdMsTimeCB(CDoc *,CDocEntry *,CTask *mem_task)11{12  U8 *st=MAlloc(64,mem_task);13  StrPrint(st,"%X",KbdMsEvtTime>>GOD_BAD_BITS);14  return st;15}16 17I64 PopUpTimerOk(U8 *header=NULL,U8 *footer=NULL)18{19  I64 i;20  CDocEntry *doc_e;21  CDoc *doc=DocNew;22  if (header) DocPrint(doc,"%s",header);23  doc_e=DocPrint(doc,"\nTimer:$TX+TC,\" \"$");24  doc_e->tag_cb=&TimeStampCB;25  doc_e=DocPrint(doc,"\nLatch:$TX+TC,\" \"$");26  doc_e->tag_cb=&KbdMsTimeCB;27  DocPrint(doc,"\n$CM+CX,0,4$$BT,\"OKAY\",LE=1$\n");28  if (footer) DocPrint(doc,"%s",footer);29  i=PopUpMenu(doc);30  DocDel(doc);31  return i;32}33 34I64 GodPick(U8 *msg=NULL)35{//GOD_GOOD_BITS36  U8 *st=MStrPrint("%s\n\nPress $GREEN$OKAY$FG$ to generate \n"37        "a random num from a timer.\n",msg);38  PopUpTimerOk(st,"\n\nThe Holy Spirit can puppet you.\n\n");39  Free(st);40  return KbdMsEvtTime>>GOD_BAD_BITS;41}42 43public U0 GodBitsIns(I64 num_bits,I64 n)44{//Insert bits into God bit fifo.45  I64 i;46  for (i=0;i<num_bits;i++) {47    FifoU8Ins(god.fifo,n&1);48    n>>=1;49  }50}51 52public U0 GodHexIns(U8 *st)53{//Insert hex record into God bit fifo.54  U8 buf[2];55  if (st) {56    buf[1]=0;57    while (*buf=*st++)58      if (Bt(char_bmp_hex_numeric,*buf))59        GodBitsIns(4,rev_bits_table[Str2I64(buf,16)]>>4);60  }61}62 63public I64 GodBits(I64 num_bits,U8 *msg=NULL)64{//Return N bits. If low on entropy pop-up okay.65  U8 b;66  I64 res=0;67  while (num_bits) {68    if (FifoU8Rem(god.fifo,&b)) {69      res=res<<1+b;70      num_bits--;71    } else72      GodBitsIns(GOD_GOOD_BITS,GodPick(msg));73  }74  return res;75}76 77public I64 GodInit(U8 *files_find_mask="/Adam/God/Vocab.DD*",U8 *fu_flags=NULL)78{//Read God's vocab file for picking words.79  I64 i,ch,fuf_flags=0;80  U8 *buf,*ptr,*ptr2;81  CDirEntry *tmpde,*tmpde1;82  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F+T+O");83  ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);84  if (fuf_flags&~FUG_FILES_FIND)85    throw('FUF');86 87  Free(god.word_file_mask);88  god.word_file_mask=StrNew(files_find_mask);89  god.word_fuf_flags=fuf_flags;90 91  tmpde=tmpde1=FilesFind(files_find_mask,fuf_flags);92  i=0;93  while (tmpde) {94    if (buf=ptr=FileRead(tmpde->full_name)) {95      while (*ptr) {96        while (*ptr && !Bt(char_bmp_word,*ptr))97          ptr++;98        if (*ptr) {99          ptr2=ptr;100          while (*ptr && Bt(char_bmp_word,*ptr))101            ptr++;102          i++;103        }104      }105      Free(buf);106    }107    tmpde=tmpde->next;108  }109 110  Free(god.words);111  god.num_words=i;112  god.words=MAlloc(i*sizeof(U8 *));113 114  tmpde=tmpde1;115  i=0;116  while (tmpde) {117    if (buf=ptr=FileRead(tmpde->full_name)) {118      while (*ptr) {119        while (*ptr && !Bt(char_bmp_word,*ptr))120          ptr++;121        if (*ptr) {122          ptr2=ptr;123          while (*ptr && Bt(char_bmp_word,*ptr))124            ptr++;125          ch=*ptr;126          *ptr=0;127          god.words[i++]=StrNew(ptr2);128          *ptr=ch;129        }130      }131      Free(buf);132    }133    tmpde=tmpde->next;134  }135  DirTreeDel(tmpde1);136  return god.num_words;137} GodInit;138 139public U8 *GodWordStr(I64 bits=17)140{//Make God pick a word. Holy Spirit Instructions141  if (god.num_words)142    return god.words[GodBits(bits)%god.num_words];143  else144    return NULL;145}146 147public U0 GodWord(I64 bits=17)148{//Make God pick a word. Holy Spirit Instructions149  if (god.num_words)150    "%s ",god.words[GodBits(bits)%god.num_words];151}152 153public U0 GodBiblePassage(I64 num_lines=20)154{//Make God pick a Bible passage. Holy Spirit Instructions155  I64 start=GodBits(21)%(ST_BIBLE_LINES-(num_lines-1))+1;156  U8 *verse=BibleLine2Verse(start);157  "%s\n\n",verse;158  Free(verse);159  BookLines(,start,num_lines);160}161