);
}
-/* Allows building an ASCII string on the stack. */
-/* This syntax: A"test" */
-/* Results in five PUSH_IMMEDIATE commands for the four letters and newline. */
+/* Builds an ASCII string on the stack using VVS PUSH_IMMEDIATE commands. */
+/* The syntax: A"test" results in six PUSH_IMMEDIATE commands for the four */
+/* letters, newline, and null-terminator. */
/* Expects 'input' to present a double-quoted ('"') ASCII string. */
/* The 'A' has already been chomped. */
void
{
uint8_t temp_byte;
fread(&temp_byte, 1, 1, input);
- if (temp_byte != '"') fprintf(stderr, "WARNING: Expected double-quote to begin string.\n");
+ if (temp_byte != '"') {
+ /* Die here since we walk the string backward and look for '"' as a terminator. */
+ fprintf(stderr, "ERROR: Expected double-quote to begin string.\n");
+ exit(EXIT_FAILURE);
+ }
/* Put the letters on the stack in reverse. Don't forget to put a null-terminator first. */
for (fread(&temp_byte,1,1,input); temp_byte != '"'; fread(&temp_byte,1,1,input)) continue;
/* First, push three spaces to start a PUSH_IMMEDIATE command for a positive number. */
uint8_t temp_output = ' ';
for(int i=0;i<3;i++) fwrite(&temp_output, 1, 1, output);
- /* Second, push the ASCII character, 7 bits total, most signficant bit first. */
+ /* Second, push the ASCII character, 7 bits total, most significant bit first. */
/* Remember, [Tab]=1 and [Space]=0. */
uint8_t index = 7; /* 7 bits needed per ASCII character. */
while (index) {