Vedran has quit [Quit: Ping timeout (120 seconds)]
dave0 has joined #forth
Vedran has joined #forth
<neuro_sys> I was thinking about it today, I think to write "re-entrant" code (although this is not a necessity most of the time), pick and roll is a necessity to allow parameter referencing deep in the stack.
<neuro_sys> Although I think roll is quite a costly operation.
dave0 has quit [Read error: Connection reset by peer]
dave0 has joined #forth
dave0 has quit [Read error: Connection reset by peer]
dave0 has joined #forth
Zarutian_HTC has joined #forth
Zarutian_HTC has quit [Remote host closed the connection]
<MrMobius> neuro_sys, re-entrant like for interrupts or what are you thinking?
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
dave0 has quit [Quit: dave's not here]
jsoft has joined #forth
<proteusguy> lispmacs, I think the extended BIOS is still around. I haven't coded to UEFI.
hosewiejacke has joined #forth
sts-q has quit [Ping timeout: 246 seconds]
sts-q has joined #forth
hosewiejacke has quit [Ping timeout: 260 seconds]
gravicappa has joined #forth
mjl has quit [Ping timeout: 260 seconds]
mjl has joined #forth
crc has quit [Read error: Connection reset by peer]
crc has joined #forth
jsoft has quit [Ping timeout: 264 seconds]
hosewiejacke has joined #forth
jedb has quit [Ping timeout: 256 seconds]
jedb has joined #forth
jedb has quit [Remote host closed the connection]
jedb has joined #forth
inode has joined #forth
<veltas> neuro_sys: On most forths the stack is at least mostly addressable using e.g. s', s0 is the base
<veltas> But ... I can't think of a reason why you need to access stack during an interrupt (if that's what you mean), only what's in the current interrupt / stack.
iyzsong has quit [Quit: ZNC 1.7.5 - https://znc.in]
iyzsong has joined #forth
xek__ has joined #forth
dave0 has joined #forth
<neuro_sys> MrMobius: Sorry I actually meant thread safe.
<neuro_sys> Or more clearly, I meant not using fixed memory locations for the program, so that it can be executed simultaneously by different tasks/processes.
<neuro_sys> But I'm wondering if Forth systems handle multitasking so that dictionaries are private to each task, then it is safe to use dictionary for data access and it would be still thread safe.
Vedran has quit [Ping timeout: 256 seconds]
Vedran has joined #forth
hosewiejacke has quit [Ping timeout: 272 seconds]
marksmith has joined #forth
hosewiejacke has joined #forth
dave0 has quit [Read error: Connection reset by peer]
<veltas> neuro_sys: PolyForth does this, and other forths. They have 'user' variables and user dictionaries local to a thread, and a system dictionary/variable for some stuff (e.g. words common to all threads)
dave0 has joined #forth
<veltas> I believe e.g. gforth has support for this
marksmith has quit [Ping timeout: 246 seconds]
dave0 has quit [Read error: Connection reset by peer]
<MrMobius> veltas, wouldnt anything you do in an interrupt access the stack if the interrupt's in forth?
marksmith has joined #forth
<veltas> I mean an interrupt shouldn't interfere with the current stack contents or expect anything particular on the stack
<veltas> I think I misunderstood what particular problem neuro_sys was trying to solve
<veltas> I understand now they are trying to make all their state 'automatic' or 'stacked' so it can be used arbitrarily without thought for where it's currently running
<veltas> neuro_sys: rdrop-exit or someone I can't remember implemented this by putting stuff in the pad area, and allowing increasing and decreasing the size of the pad with pad+ and pad- by 256 bytes or something
<veltas> Their pad was at the end of dictionary space (rather than just after HERE) and so it could grow downwards like a stack
<veltas> So at the start of a word they could pad- to get some more reentrant space if they wanted, and then pad+ to clean up
<veltas> The other (more common, but not as general-purpose) trick is to just ALLOT space and then ALLOT with negative argument later
<veltas> Obviously that has limitations on where it can be used, but in forth that should bug you less: YAGNI to the extreme etc
<veltas> I'm currently writing a merge sort algorithm that uses this space for the merge buffer.
<veltas> And then it's convenient too because you can ALIGN and then use , to write to it like a stream
marksmith has quit [Ping timeout: 264 seconds]
<neuro_sys> Yes, I didn't mean reentrancy (misused the term), and I don't see any problems with interrupts wrt Forth (actually it's faster since there's no register saving/restoring).
<neuro_sys> On another note, I changed my forth lib words to use Dictionary instead. Now I'm focusing on the classic style, and not using local variables, and reading more material.
<veltas> Cool
hosewiejacke has quit [Ping timeout: 258 seconds]
marksmith has joined #forth
X-Scale has quit [Quit: HydraIRC -> http://www.hydrairc.com <- Wibbly Wobbly IRC]
X-Scale has joined #forth
koisoke has quit [Remote host closed the connection]
koisoke has joined #forth
xek_ has joined #forth
xek__ has quit [Ping timeout: 260 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has joined #forth
xek has joined #forth
xek_ has quit [Ping timeout: 240 seconds]
xek_ has joined #forth
xek has quit [Ping timeout: 265 seconds]
koisoke has quit [Ping timeout: 240 seconds]
koisoke has joined #forth
Lord_Nightmare has quit [Quit: ZNC - http://znc.in]
Lord_Nightmare has joined #forth
hosewiejacke has joined #forth
hosewiejacke has quit [Ping timeout: 264 seconds]
the_cuckoo has quit [Ping timeout: 240 seconds]
the_cuckoo has joined #forth
koisoke has quit [Remote host closed the connection]
koisoke has joined #forth
gravicappa has quit [Ping timeout: 240 seconds]
hosewiejacke has joined #forth
gravicappa has joined #forth
charlie has joined #forth
charlie is now known as Guest16873
hosewiejacke has quit [Ping timeout: 246 seconds]
the_cuckoo has quit [Ping timeout: 258 seconds]
Guest16873 has quit [Ping timeout: 256 seconds]
Guest16873 has joined #forth
charlie1 has joined #forth
Guest16873 has quit [Ping timeout: 272 seconds]
charlie1 is now known as the_cuckoo
marksmith has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 258 seconds]
marksmith has joined #forth
dave0 has joined #forth
Zarutian_HTC has joined #forth
lispmacs[work] has joined #forth
marksmith has quit [Quit: Leaving.]
xek_ has quit [Ping timeout: 246 seconds]
dave0 has quit [Read error: Connection reset by peer]
dave0 has joined #forth
dave0 has quit [Read error: Connection reset by peer]
dave0 has joined #forth