![]() |
Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members
asoft_detoken.cGo to the documentation of this file.00001 #include <stdio.h> 00002 #include <string.h> 00003 00004 /* Starting at 0x80 */ 00005 00006 char applesoft_tokens[][8] = 00007 { 00008 /* 80 */ "END", "FOR", "NEXT", "DATA", "INPUT", "DEL", "DIM", "READ", 00009 /* 88 */ "GR", "TEXT", "PR #", "IN #", "CALL", "PLOT", "HLIN", "VLIN", 00010 /* 90 */ "HGR2", "HGR", "HCOLOR=", "HPLOT", "DRAW", "XDRAW", "HTAB", "HOME", 00011 /* 98 */ "ROT=", "SCALE=", "SHLOAD", "TRACE", "NOTRACE", "NORMAL", "INVERSE", "FLASH", 00012 /* A0 */ "COLOR=", "POP", "VTAB ", "HIMEM:", "LOMEM:", "ONERR", "RESUME", "RECALL", 00013 /* A8 */ "STORE", "SPEED=", "LET", "GOTO", "RUN", "IF", "RESTORE", "&", 00014 /* B0 */ "GOSUB", "RETURN", "REM", "STOP", "ON", "WAIT", "LOAD", "SAVE", 00015 /* B8 */ "DEF", "POKE", "PRINT", "CONT", "LIST", "CLEAR", "GET", "NEW", 00016 /* C0 */ "TAB (", "TO", "FN", "SPC(", "THEN", "AT", "NOT", "STEP", 00017 /* C8 */ "+", "-", "*", "/", "^", "AND", "OR", ">", 00018 /* D0 */ "=", "<", "SGN", "INT", "ABS", "USR", "FRE", "SCRN (", 00019 /* D8 */ "PDL", "POS", "SQR", "RND", "LOG", "EXP", "COS", "SIN", 00020 /* E0 */ "TAN", "ATN", "PEEK", "LEN", "STR$", "VAL", "ASC", "CHR$", 00021 /* E8 */ "LEFT$", "RIGHT$", "MID$", "", "", "", "", "", 00022 /* F0 */ "", "", "", "", "", "", "", "", 00023 /* F8 */ "", "", "", "", "", "(", "(", "(" 00024 }; 00025 00026 /* 00027 Integer Basic 00028 $03: : 00029 $04: LOAD 00030 $05: SAVE 00031 $07: RUN 00032 $09: DEL 00033 $0A: , 00034 $0B: NEW 00035 $0C: CLR 00036 $0D: AUTO 00037 $0F: MAN 00038 $10: HIMEM: 00039 $11: LOMEM: 00040 $12: + 00041 $13: - 00042 $14: * 00043 $15: / 00044 $16: = 00045 $17: # 00046 $18: >= 00047 $19: > 00048 $1A: <= 00049 $1B: <> 00050 $1C: < 00051 $1D: AND 00052 $1E: OR 00053 $1F: MOD 00054 $20: ^ 00055 $22: ( 00056 $23: , 00057 $24, 00058 $25: THEN 00059 $26, 00060 $27: , 00061 $28, $29: \" 00062 $2A: ( 00063 $2D: ( 00064 $2E: PEEK 00065 $2F: RND 00066 $30: SGN 00067 $31: ABS 00068 $32: PDL 00069 $34: ( 00070 $35: + 00071 $36: - 00072 $37: NOT 00073 $38: ( 00074 $39: = 00075 $3A: # 00076 $3B: LEN ( 00077 $3C: ASC ( 00078 $3D: SCRN ( 00079 $3E: , 00080 $3F: ( 00081 $40: $ 00082 $42: ( 00083 $43, 00084 $44: , 00085 $45, 00086 $46, 00087 $47: ; 00088 $48, 00089 $49: , 00090 $4A: , 00091 $4B: TEXT 00092 $4C: GR 00093 $4D: CALL 00094 $4E, 00095 $4F: DIM 00096 $50: TAB 00097 $51: END 00098 $52, $53, $54: INPUT 00099 $55: FOR 00100 $56: = 00101 $57: TO 00102 $58: STEP 00103 $59: NEXT 00104 $5A: , 00105 $5B: RETURN 00106 $5C: GOSUB 00107 $5D: REM 00108 $5E: LET 00109 $5F: GOTO 00110 $60: IF 00111 $61, 00112 $62: PRINT 00113 $63: PRINT 00114 $64: POKE 00115 $65: , 00116 $66: COLOR= 00117 $67: PLOT 00118 $68: , 00119 $69: HLIN 00120 $6A: , 00121 $6B: AT 00122 $6C: VLIN 00123 $6D: , 00124 $6E: AT 00125 $6F: VTAB 00126 $70, 00127 $71: = 00128 $72: ) 00129 $74: LIST 00130 $75: , 00131 $77: POP 00132 $79: NO DSP 00133 $7A: NO TRACE 00134 $7B, 00135 $7C: DSP 00136 $7D: TRACE 00137 $7E: PR # 00138 $7F: IN # 00139 */ 00140 00141 00142 int main(int argc, char **argv) 00143 { 00144 FILE *fil; 00145 int ch1, i; 00146 unsigned char size1, size2; 00147 unsigned char line1, line2; 00148 unsigned char eight, line_length; 00149 short ifc = 0; 00150 short q = 0; 00151 00152 if (argc > 1) 00153 fil = fopen(argv[1],"rb"); 00154 else 00155 fil = stdin; 00156 00157 // read size, first two bytes 00158 size1 = fgetc(fil); 00159 size2 = fgetc(fil); 00160 while (!feof(fil)) 00161 { 00162 line_length = fgetc(fil); 00163 eight = fgetc(fil); /* sometimes 8, sometimes 9? */ 00164 if (eight == 0) 00165 { 00166 break; 00167 } 00168 line1 = fgetc(fil); 00169 line2 = fgetc(fil); 00170 printf("%4d ", (((int)line2)<<8) + line1); 00171 00172 while ( (ch1 = fgetc(fil)) != 0 ) 00173 { 00174 if (ch1 >= 0x80) 00175 { 00176 fputc(' ', stdout); 00177 for (i = 0; i < strlen(applesoft_tokens[ch1-0x80]); i++) 00178 { 00179 fputc(applesoft_tokens[ch1 - 0x80][i], stdout); 00180 } 00181 fputc(' ', stdout); 00182 if (ch1 == 0xad) 00183 { 00184 ifc++; 00185 } 00186 } 00187 else 00188 if (ch1 == ':' && !ifc && !q) 00189 { 00190 printf("\n "); 00191 } 00192 else 00193 { 00194 fputc(ch1, stdout); 00195 if (ch1 == '"') 00196 { 00197 q = !q; 00198 } 00199 } 00200 } 00201 printf("\n"); 00202 ifc = 0; 00203 } // while (!feof) 00204 if (argc > 1) 00205 fclose(fil); 00206 return 0; 00207 } |