The archive contains five fonts, and the number of times each scan line is displayed can be set in the driver, so this one driver provides the following text modes:
@David, pfth has evolved a bit since you ported it to the P2, so it will probably need to be done again. The main change is that I now use 16-bit execution tokens instead of 32-bit. pfth should run in the first 64K of memory, but I'll have to modify it slightly to support all of the memory. I should be able to store the XTs shifted down by 1 bit since the LSB is always zero. This will allow addressing all of P2's hub RAM.
@Bill, I've looked at your video text drivers before. They look pretty good. One of the main issues is the amount of hub RAM needed. I'll have to take another look at them, but for now I'll probably try to work with the 30x15 display that only requires a little over 1K of memory.
@David, pfth has evolved a bit since you ported it to the P2, so it will probably need to be done again. The main change is that I now use 16-bit execution tokens instead of 32-bit. pfth should run in the first 64K of memory, but I'll have to modify it slightly to support all of the memory. I should be able to store the XTs shifted down by 1 bit since the LSB is always zero. This will allow addressing all of P2's hub RAM.
@Bill, I've looked at your video text drivers before. They look pretty good. One of the main issues is the amount of hub RAM needed. I'll have to take another look at them, but for now I'll probably try to work with the 30x15 display that only requires a little over 1K of memory.
Computer programming languages are only languages in the analogous or metaphorical sense...
That is a big statement. I'm going to argue that they are as much language as anything else.
...And yet, there are still a lot of computer programmers that won't admit that.
And why should they? Programmers do a lot of communicating between each other in code. It's like telling users of Welsh that Welsh is not a proper language.
Just show me how to debate meaning in Python or C and I will back down from my position.
Easy, let's look at a few examples:
Example 1:
/*
We are going to discuss meaning. Specifically the meaning of symbols
within the context of this code.
The symbol "x" will represent the distance along the horizontal axis of a
Cartesian coordinate system, from left to right.
*/
int x = 2;
int y = 3;
int main(int argc, char* argv[])
{
plot (x, y);
}
You may think I'm joking here but the comment structure is defined in the C language. Clearly C is a superset of written English (in this case) and can be used to express anything that can be written in English.
Example 2:
char *s = "Mother died today...." // Insert the complete text of "The Outsider" by Albert Camus here.
int main(int argc, char* argv[])
{
printf (s);
}
Again I'm not joking. Strings are defined in the C language and anything that can be expressed in English can be expressed in a C. C is a superset of written English.
Example 3:
Consider the following algorithm expressed in grammatically correct English:
Let printf be an external function with no arguments returning an integer.
Let S be an enumeration with values x1 equal to 0 and x2 equal to 1.
Let main be a function returning an integer. It is called with no arguments.
To perform the function, let S be a structure with member abdd, where abdd is
an integer. Let j be a S structure. Let i be an integer, whose initial value
is enumeration x1. Perform block 1, starting at case i, or the default case
if no such case exists. To perform block 1, first let this be the start of
case 1. Let this be the start of case 2. Pass the string "%d\n" and 45 to
printf. Then let this be the start of the default case. Pass the string
"%d\n" and 45 to printf. Next, compute nothing. After that, compute nothing.
This ends block 1. Continuing on, we next perform block 2 provided zero does
not equal i. To perform block 2, pass the string "%d\n" and i to printf.
Continuing on, we next continue to perform block 3 as long as zero does not
equal i before decrementing i by one at the beginning of the iteration. To
perform block 3, evaluate 2. Continuing on, we next continue to compute
nothing as long as zero does not equal i prior to the iteration; before
starting this loop, evaluate i; upon completion of each iteration of the
loop, increment i by one. Then continue to perform block 4 as long as zero
does not equal i at the end of the iteration. To perform block 4, evaluate 3.
Now consider the same algorithm expressed in C:
extern printf ();
enum S { x1, x2};
main () {
struct S {
int abdd;
} j;
int i = x1;
switch(i) {
case 1:
case 2: printf ("%d\n",45);
default: printf ("%d\n",45);;;
}
if(i) { printf ("%d\n",i); }
while(i--) { 2; }
for(i; i; i++);
do {3;}
while (i);
}
Guess what? The above English can be translated by machine directly into the C program. You can effectively compile the English into working code. Conversely the C text can be translated by machine into that exact same C program.
Github.com. On github you will find many people contributing to code development. Modifications to the code are passed around as git updates or "pulls". Versions are ever evolving. There is clearly a conversation going on between humans in programming languages on github.
Now, the examples above may not convince you but I have an even more serious problem with your statement about debating meaning.
Basically written or spoken language by itself can never express meaning. Words have to have some grounding in a shared experience between the speaker and listener, reader and writer.
Think I'm crazy?
Consider the dictionary. When you look up the meaning of words it expresses it in terms of other words. Of course if you don't know what they mean you have to look them up. Again you get meanings expressed in words. Utimately you go round in circles and can never find out what anything means unless you already know the meaning of some of those word which you learned from some other non-language experience.
Ergo, language itself cannot debate meaning.
Consider the classic example: Let's say we have a means of communicating with aliens on some impossibly distant planet. Somehow they have managed to figure out how to communicate in English so all is well. Except for one detail. When we say "left" and "right" they have no idea which is which and, crucially, we have no way to tell them which is which. If we order a supply of screws from them we can not be sure we get right handed or left handed screws.
Ergo, language itself cannot debate meaning.
It seems you are headed towards asserting that all computer languages are a sub-set of English, and that mathematics might even be a sub-set of English.
You should not put words in my mouth. What I was getting at is that C is clearly derived from English. It uses English alphabet and punctuation symbols. It uses English words, "if", "for", "while" etc. It even tries to structure things gramatically in an English style. Perhaps that's because it was developed by English speaking people.
Anyway I will now assert something stronger. C and other languages are supersets of English not subsets. As illustrated above.
I don't thing C is any more a language than algebra is or chemistry.
I'm not sure what that means. Algebra clearly is a language of some sort, a notational system for expressing ideas more easily that writing them out in a regular human spoken language. On the other hand Algebra is that set of ideas the notation was developed to express. Mathematics is indeed a superset of regular human languages. Perhaps the same can be said for Chemistry.
@Heater
This doesn't need a lot of discussion. When one says, "A pretty girl is like a melody," we all get the simile.
When Shakespear said, "The world is all a stage...", we pretty much accepted the metaphor.
True language is simply much broader in use and characteristics than a 'computer language'. I teach English and the topic is vast in comparison to teaching C or Basic or Algebra.
Such references are metaphorical, not actual.
++++++++++++++
I just grow deeply concerned when computer geeks seem to lead the naive into thinking that computers have the language abilities that an average human possesses. It simply takes a CPU and a binary numerical storage scheme and codifies written or phonological representations of language without any true comprehension of meaning or context.
Searches and sorts can do a heck of a lot, so can computation. But actually sorting out meaning is a very human skill. And so is presenting meaningful information.
The world has gotten too caught up in the illusion that a computer language is somehow equal to a human language.
I'd just rather see teachers teach realities and useful skills as they are than to try to encourage the extremely speculative stuff.. like colonizing Mars.
The computer is a wonderful business machine - handles accounting, communications, record-keeping, and reporting taxes.
But how many programmers can figure out how to file a tax return that includes the sale of a Limited Partnership that has invested in gas and oil? Off they go to a nerdy accountant that actually reads all the IRS publications and knows each line of every form.
The proper understanding of language and its role is important. Maybe the most important factor in understanding reality today.
...computer geeks seem to lead the naive into thinking that computers have the language abilities that an average human possesses.
Nobody here ever said that, certainly not me, and I don't know any geeks that would think it is true. You are now mixing up talking about the capabilities of computers with talking about programming languages, what they are for and how powerfull they may or may not be.
..the illusion that a computer language is somehow equal to a human language.
Well, given that:
1) Computer programming languages are created by humans.
2) Programming languages are exactly intended to be understandable by human beings, otherwise what's the point of them?
3) I posit that computers do not "understand" anything about any programming language, they just blindly perform actions based on the input text. Try asking a computer what the input program text does or why it is done that way?
I conclude that programming languages are indeed a human language, part of that rich tapestry of language that humans use to communicate. As I said C is a superset of English anyway. Anything you can say in English you can say in C.
P.S. Didn't you think that the babelbuster was amazing and fun? Sadly I can't get it to compile and run on my Debian box. Seems my machine does not understand the ML it is written in:)
At this point, I am far more interested with what Forth is as a system than the validity of a computer language in terms of linguistics' definition of language. If you seriously study linguistics, I think you would find that you are mixing the fundamental definition of a language with the metaphor.
On other fronts....
Many have claimed that Forth is not an Operating System and pointed to computers with file systems and all sorts of other software services.
Currently, I have been reading and studying eForth is an eye toward actually writing my own verison for the Propeller. It is a huge project for me, but it provides a lot of learning dividends.
I came across an asserting in eForth documents that the "Outer interpreter" is the Operating System in Forth. If so, it is about a minimalistic as you can get for an OS. Forth has two interpreters, the "Inner interpreter" and the "Outer interpreter".
The outer one is also known as the "Text Interpret" and it provides the human interface that sorts out numerical operations from text that is used to call the Forth words in the Dictionary. It is also used to create Forth programs via creating new Forth words.
It seems to be a minimalistic presentation of an OS. Forth also extends to having storage in a Block system ( now defunct for most) or a file system (such as the SDcard).
So that seems to pretty much work for me to be an OS.
- - - - - - - - - - -
The other 'inner interpreter' is a bit harder to describe. It basically separates the calls for executible code between the Forth words, and machine code as the Forth machine does at some point rely on low level primatives that are in machine code, not Forth words.
eForth has tried to use only 31 of these and make the rest of the Forth machine in Forth words. That makes it both an easy Assembler study model, and shows how much can get done we very little Assembler code.
+++++++++++
I don't really care if you accept my point of view about real languages. There are lots of bodies of knowledge within a natural language that define their own terms and create a useful focus. Both Algebra and computer languages place strong emphasis on math and logic, but there is a lot of the world has nothing to do with math or logic. A natural language can express the unquantified and the paradoxical.
I know you, and probably everyone else is bored with this, but as we are here:
If you seriously study linguistics, I think you would find that you are mixing the fundamental definition of a language with the metaphor.
OK let's make a start on that. From Noam Chomsky, a leading light in linguistics:
During the past 50 years, the work of Noam Chomsky has been indisputably influential in its conceptualisation of language as “a set (finite or infinite) of sentences, each finite in length and constructed out of a finite set of elements” (Chomsky, 1957, as cited in Lyons, 1981, p.7). As Lyons (1981, p.7) comments, this definition varied markedly from previous definitions of language in its silence about both the communicative function and the symbolic properties of language; it instead focused on the essential structure of language in a way that was mathematically precise.
Emphasis is mine. Sounds like it includes all the programming languages I know of. Even Forth:) If you take a look at Chomsky's work he had a lot to say about grammar and parsing that clearly extended to programming language systems. There is no metaphor here.
I will admit that your definition of "real language" may differ from Chomsky's. But then many linguists take issue with Chomsky and as far as I can tell "language" has no agreed definition in that community.
As far as I am concerned, you might be pleased to hear, Forth is an OS. It allows one to operate the system. What more do you want? It allows the user to get data into and out of the device. It allows the entry and running of programs. It sure does not have all the bells and whistles of a Windows or Linux, so what?
Well, you site Noam Chomsky. More recently much of his work as been challenged. Is 1957 really applicable to Linguistics today?
Noam Chomsky worked at MIT at a time when the personal computer was in its heady go-go days. So he and many of his followers had high hopes of providing an underlying 'universal grammar' that could make computers into universal interpreters. The 'universal grammar' concept has been pretty much dis-proven through statistical analysis of all existing native languages that indicate variation is random.
These days, Noam Chomsky seems to be more active in his political challenges to US government policy and he hasn't kept up with the leading edge of linguistics. He remains popular mainly amongst computer programmers and South and Central Americans that are anti-imperialist... but Linguistics continues to evolve world-wide.
I just don't see where a semantics debate on the meaning of 'language' has a place in this thread.
Back to the thread.....
I am much more interested in the fact that Forth provides a System as well as a Computer Language. It couldn't apply to BasicStamps or smaller micro-controllers as the Forth Interpret alone occupies roughly 7K bytes of space. The Propeller enhances Forth by providing 32 bit numerical calculation, 32K of RAM, and of course, the 8 parallel Cogs. It is an exciting Forth machine as it has unexplored possiblities. With an SDcard, it is very much a stand alone development system.
Back to Linguistics.....
The study of Linguistics does have a sub-topic of semantics and any word can have more than one meaning. That is my point.
Look in the dictionary and you will see some with as many as 20 or moredifferent items listed numerically and each one is supposedly a seperate meaning.
A word can have two or more meanings that are sorted out by the context in which the word is used.
Secondary meanings often evolve from the metaphorical use of the original meaning was. And meaning does both fragment into multiple meanings and change over time.
I just contend that the Linguistic meaning of language is much broader and encompasses more than the meaning when applied to a 'computer language'.
Noam Chomsky may not have passed away yet, but he is past his prime in contributions to linguistic studies.
A quick peek in Webster's College Dictionary shows that the #1 listing agrees with what Loopy is saying, and #4 agrees with what Heater says. There are nine definitions in all and the first is supposed to be the broadest and most accepted use. The higher the number, the more special the context.
Comments
http://forums.parallax.com/showthread.php/129739-64-column-VGA-text-driver-in-one-cog-48-40-32-30-24-20...rows!-%28RELEASED%29
@Bill, I've looked at your video text drivers before. They look pretty good. One of the main issues is the amount of hub RAM needed. I'll have to take another look at them, but for now I'll probably try to work with the 30x15 display that only requires a little over 1K of memory.
Unfortunately they use a lot more than 1k so the 30x15 wins there
The 8x8 font takes 1k, a 64x16 screen buffer would take another k, but both could be overlaid on the driver cog image after the driver is launched.
Is it impossible to use the built-in font instead of custom font? If so, why?
Extraordinary loading, etc... frustrates me.
The ROM font would take too many instructions to display
Example 1: You may think I'm joking here but the comment structure is defined in the C language. Clearly C is a superset of written English (in this case) and can be used to express anything that can be written in English.
Example 2: Again I'm not joking. Strings are defined in the C language and anything that can be expressed in English can be expressed in a C. C is a superset of written English.
Example 3:
Consider the following algorithm expressed in grammatically correct English:
Let printf be an external function with no arguments returning an integer.
Let S be an enumeration with values x1 equal to 0 and x2 equal to 1.
Let main be a function returning an integer. It is called with no arguments.
To perform the function, let S be a structure with member abdd, where abdd is
an integer. Let j be a S structure. Let i be an integer, whose initial value
is enumeration x1. Perform block 1, starting at case i, or the default case
if no such case exists. To perform block 1, first let this be the start of
case 1. Let this be the start of case 2. Pass the string "%d\n" and 45 to
printf. Then let this be the start of the default case. Pass the string
"%d\n" and 45 to printf. Next, compute nothing. After that, compute nothing.
This ends block 1. Continuing on, we next perform block 2 provided zero does
not equal i. To perform block 2, pass the string "%d\n" and i to printf.
Continuing on, we next continue to perform block 3 as long as zero does not
equal i before decrementing i by one at the beginning of the iteration. To
perform block 3, evaluate 2. Continuing on, we next continue to compute
nothing as long as zero does not equal i prior to the iteration; before
starting this loop, evaluate i; upon completion of each iteration of the
loop, increment i by one. Then continue to perform block 4 as long as zero
does not equal i at the end of the iteration. To perform block 4, evaluate 3.
Now consider the same algorithm expressed in C: Guess what? The above English can be translated by machine directly into the C program. You can effectively compile the English into working code. Conversely the C text can be translated by machine into that exact same C program.
English and C are at least equivalent here.
To see how this can be done visit here:
http://www.cs.cmu.edu/~dst/DeCSS/Baccash/
Example 3:
Github.com. On github you will find many people contributing to code development. Modifications to the code are passed around as git updates or "pulls". Versions are ever evolving. There is clearly a conversation going on between humans in programming languages on github.
Now, the examples above may not convince you but I have an even more serious problem with your statement about debating meaning.
Basically written or spoken language by itself can never express meaning. Words have to have some grounding in a shared experience between the speaker and listener, reader and writer.
Think I'm crazy?
Consider the dictionary. When you look up the meaning of words it expresses it in terms of other words. Of course if you don't know what they mean you have to look them up. Again you get meanings expressed in words. Utimately you go round in circles and can never find out what anything means unless you already know the meaning of some of those word which you learned from some other non-language experience.
Ergo, language itself cannot debate meaning.
Consider the classic example: Let's say we have a means of communicating with aliens on some impossibly distant planet. Somehow they have managed to figure out how to communicate in English so all is well. Except for one detail. When we say "left" and "right" they have no idea which is which and, crucially, we have no way to tell them which is which. If we order a supply of screws from them we can not be sure we get right handed or left handed screws.
Ergo, language itself cannot debate meaning.
You should not put words in my mouth. What I was getting at is that C is clearly derived from English. It uses English alphabet and punctuation symbols. It uses English words, "if", "for", "while" etc. It even tries to structure things gramatically in an English style. Perhaps that's because it was developed by English speaking people.
Anyway I will now assert something stronger. C and other languages are supersets of English not subsets. As illustrated above. I'm not sure what that means. Algebra clearly is a language of some sort, a notational system for expressing ideas more easily that writing them out in a regular human spoken language. On the other hand Algebra is that set of ideas the notation was developed to express. Mathematics is indeed a superset of regular human languages. Perhaps the same can be said for Chemistry.
Did I get a bit off topic there?:)
This doesn't need a lot of discussion. When one says, "A pretty girl is like a melody," we all get the simile.
When Shakespear said, "The world is all a stage...", we pretty much accepted the metaphor.
True language is simply much broader in use and characteristics than a 'computer language'. I teach English and the topic is vast in comparison to teaching C or Basic or Algebra.
Such references are metaphorical, not actual.
++++++++++++++
I just grow deeply concerned when computer geeks seem to lead the naive into thinking that computers have the language abilities that an average human possesses. It simply takes a CPU and a binary numerical storage scheme and codifies written or phonological representations of language without any true comprehension of meaning or context.
Searches and sorts can do a heck of a lot, so can computation. But actually sorting out meaning is a very human skill. And so is presenting meaningful information.
The world has gotten too caught up in the illusion that a computer language is somehow equal to a human language.
I'd just rather see teachers teach realities and useful skills as they are than to try to encourage the extremely speculative stuff.. like colonizing Mars.
The computer is a wonderful business machine - handles accounting, communications, record-keeping, and reporting taxes.
But how many programmers can figure out how to file a tax return that includes the sale of a Limited Partnership that has invested in gas and oil? Off they go to a nerdy accountant that actually reads all the IRS publications and knows each line of every form.
The proper understanding of language and its role is important. Maybe the most important factor in understanding reality today.
On other fronts....
Many have claimed that Forth is not an Operating System and pointed to computers with file systems and all sorts of other software services.
Currently, I have been reading and studying eForth is an eye toward actually writing my own verison for the Propeller. It is a huge project for me, but it provides a lot of learning dividends.
I came across an asserting in eForth documents that the "Outer interpreter" is the Operating System in Forth. If so, it is about a minimalistic as you can get for an OS. Forth has two interpreters, the "Inner interpreter" and the "Outer interpreter".
The outer one is also known as the "Text Interpret" and it provides the human interface that sorts out numerical operations from text that is used to call the Forth words in the Dictionary. It is also used to create Forth programs via creating new Forth words.
It seems to be a minimalistic presentation of an OS. Forth also extends to having storage in a Block system ( now defunct for most) or a file system (such as the SDcard).
So that seems to pretty much work for me to be an OS.
- - - - - - - - - - -
The other 'inner interpreter' is a bit harder to describe. It basically separates the calls for executible code between the Forth words, and machine code as the Forth machine does at some point rely on low level primatives that are in machine code, not Forth words.
eForth has tried to use only 31 of these and make the rest of the Forth machine in Forth words. That makes it both an easy Assembler study model, and shows how much can get done we very little Assembler code.
+++++++++++
I don't really care if you accept my point of view about real languages. There are lots of bodies of knowledge within a natural language that define their own terms and create a useful focus. Both Algebra and computer languages place strong emphasis on math and logic, but there is a lot of the world has nothing to do with math or logic. A natural language can express the unquantified and the paradoxical.
Emphasis is mine. Sounds like it includes all the programming languages I know of. Even Forth:) If you take a look at Chomsky's work he had a lot to say about grammar and parsing that clearly extended to programming language systems. There is no metaphor here.
I will admit that your definition of "real language" may differ from Chomsky's. But then many linguists take issue with Chomsky and as far as I can tell "language" has no agreed definition in that community.
As far as I am concerned, you might be pleased to hear, Forth is an OS. It allows one to operate the system. What more do you want? It allows the user to get data into and out of the device. It allows the entry and running of programs. It sure does not have all the bells and whistles of a Windows or Linux, so what?
Noam Chomsky worked at MIT at a time when the personal computer was in its heady go-go days. So he and many of his followers had high hopes of providing an underlying 'universal grammar' that could make computers into universal interpreters. The 'universal grammar' concept has been pretty much dis-proven through statistical analysis of all existing native languages that indicate variation is random.
These days, Noam Chomsky seems to be more active in his political challenges to US government policy and he hasn't kept up with the leading edge of linguistics. He remains popular mainly amongst computer programmers and South and Central Americans that are anti-imperialist... but Linguistics continues to evolve world-wide.
I just don't see where a semantics debate on the meaning of 'language' has a place in this thread.
Back to the thread.....
I am much more interested in the fact that Forth provides a System as well as a Computer Language. It couldn't apply to BasicStamps or smaller micro-controllers as the Forth Interpret alone occupies roughly 7K bytes of space. The Propeller enhances Forth by providing 32 bit numerical calculation, 32K of RAM, and of course, the 8 parallel Cogs. It is an exciting Forth machine as it has unexplored possiblities. With an SDcard, it is very much a stand alone development system.
Back to Linguistics.....
The study of Linguistics does have a sub-topic of semantics and any word can have more than one meaning. That is my point.
Look in the dictionary and you will see some with as many as 20 or moredifferent items listed numerically and each one is supposedly a seperate meaning.
A word can have two or more meanings that are sorted out by the context in which the word is used.
Secondary meanings often evolve from the metaphorical use of the original meaning was. And meaning does both fragment into multiple meanings and change over time.
I just contend that the Linguistic meaning of language is much broader and encompasses more than the meaning when applied to a 'computer language'.
Noam Chomsky may not have passed away yet, but he is past his prime in contributions to linguistic studies.