On Apr 15, 2016, at 12:20 PM, Mark Cave-Ayland wrote:
On 15/04/16 17:05, Programmingkid wrote:
Can you demonstrate how the patch breaks down the OS 9 loader into sections terminated by LF so we can see the individual chunks that are passed to "interpret". With this it is possible to get a good understanding as to how the patch works and determine how it will affect other OSs.
Why do you think the loader terminates sections by Line Feed? Did you mean New Line?
Simply extract the OS 9 bootloader and break it into individual sections terminated by either a CR/LF so we can see how bootinfo_load.c segments its calls into the Forth interpreter.
So you want something like this:
#include <stdio.h> #include <string.h>
void print_words(char c) { static char buffer[100] = ""; static int index = 0; static int word_count = 0;
// if whitespace is detected if(c == '\r' || c == '\n' || c == ' ') { word_count++; buffer[index] = '\0'; printf("Word %d: %10s \tsize: %d\n", word_count, buffer, strlen(buffer)); index = 0; return; }
buffer[index] = c; index++; }
int main (int argc, const char * argv[]) { char mystring[100] = "The quick brown fox jumps over the lazy dog"; mystring[3] = '\r'; mystring[9] = '\n'; for (int i = 0; i < strlen(mystring); i++) { print_words(mystring[i]); }
return 0; }
Output:
Word 1: The size: 3 Word 2: quick size: 5 Word 3: brown size: 5 Word 4: fox size: 3 Word 5: jumps size: 5 Word 6: over size: 4 Word 7: the size: 3 Word 8: lazy size: 4
I will implement this into OpenBIOS if this is what you want.