Mix
Random mix of pages and files
SW/FORTH
2025.07.12 01:24:36 - 2025.07.12 01:25:05 end dir Gilhad

Files in SW/FORTH/ :


End of index

Nápady:

  • Arduino bootloader - mohl by mít navíc rutinu/funkci, která dostane adresu hlavičky v RAM, kde bude Adresa v RAM, Adresa ve Flash, délka a adresa ve Flash, kam se vrátit/skočit
    • program by odněkud načetl overlay, nebo zcela jiný program, skočil by do bootloaderu, ten by to přeflašnul a skočil na dané místo (často v nově flašnutém bloku) (nebo ve starém programu, který by natáhnul další část, protože je omezen velikostí RAM) - a na atmega2560 by to mohlo fungovat i s externí pamětí (tedy celkem 64kB RAM - 4 slova na hlavičku, stack netřeba)
  • 24bit FORTH s 24bit adresama i cells, takže Double vlastně netřeba (kromě vědeckých výpoštů, kde bude i Float a tak)
    • pro asemblování se dá použít trik s dummy hlavičkami a jejich přepsání z "avr-objdump exe.elf" - /home/gilhad/GIT-ghub/Arduino/Video/MegaHomeFORTH/SW/tools
  • PRIMITIVUM slovo napsané ve strojáku, nutně ve FLASH
  • složené/kompozitní slovo typicky : name some thing ... ;
  • FRÁZE složené/kompozitní slovo, které je ale zapsáno v asembleru/C takže nepotřebuje (pomalý) NEXT mezi jednotlivými prvky. Je nezbytně uloženo ve FLASH (1+ 2/ 2* ale i složitější)
  • FOG word - označí slovo word jako fog, vyhledávání a vypisovaní se na něm zastaví. opštovné označení to odznačí.
  • poor man's local variables:
    • a poor man's local variable approach I've occasionally used in Forth (it's not a true local variable thing, since pointers to the variables don't work that way, it just pushes and pops old values on and off the return stack). First, set up a couple of ordinary global variables, say A and B. Then code like this:
: DEMO

( maybe some code )

A @ >R ( pushing value of A to return stack )
B @ >R ( pushing value of B to return stack )

( do some work with A and B as though they were local )

R> B ! ( popping value of B from return stack )
R> A ! ( popping value of A from return stack )

( maybe some more code ) ;