Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / Libraries / Sapphire / sail / errgen.bas
diff --git a/StraySrc/Libraries/Sapphire/sail/errgen.bas b/StraySrc/Libraries/Sapphire/sail/errgen.bas
new file mode 100644 (file)
index 0000000..1a37cba
--- /dev/null
@@ -0,0 +1,167 @@
+REM >ErrorGen
+REM
+REM Generation of error tables
+REM
+REM © 1995 Straylight
+REM
+
+ON ERROR PRINTREPORT$;" ["+STR$ERL+"]":CLOSE #0:END
+
+DIM errMsg$(256),errName$(256)
+tab$=CHR$(9)
+
+REM --- Generate the token table ---
+
+RESTORE
+curr%=0
+READ errMsg$(curr%),errName$(curr%)
+WHILE errMsg$(curr%)<>"***"
+  curr%+=1
+  READ errMsg$(curr%),errName$(curr%)
+ENDWHILE
+
+C=OPENOUT("sh.errTable")
+BPUT#C,";"
+BPUT#C,"; errTable.sh"
+BPUT#C,";"
+BPUT#C,"; Define error messages table (generated)"
+BPUT#C,";"
+BPUT#C,"; © 1995 Straylight"
+BPUT#C,";"
+BPUT#C,""
+BPUT#C,tab$+tab$+"["+tab$+":LNOT::DEF:errTable__dfn"
+BPUT#C,tab$+tab$+"GBLL"+tab$+"errTable__dfn"
+BPUT#C,""
+
+curr%=0
+BPUT#C,"errTable"
+WHILE errMsg$(curr%)<>"***"
+  BPUT#C,tab$+tab$+"DCD"+tab$+"err__msg"+STR$curr%+"-errTable"
+  curr%+=1
+ENDWHILE
+BPUT#C,""
+
+curr%=0
+WHILE errMsg$(curr%)<>"***"
+  BPUT#C,"err__msg"+STR$curr%+tab$+"DCB"+tab$+""""+errMsg$(curr%)+""",0"
+  curr%+=1
+ENDWHILE
+BPUT#C,""
+BPUT#C,tab$+tab$+"]"
+BPUT#C,""
+BPUT#C,tab$+tab$+"END"
+CLOSE#C
+OSCLI "Settype sh.errTable FFF"
+
+REM -- Generate the error numbers ---
+
+RESTORE
+C=OPENOUT("sh.errNum")
+BPUT#C,";"
+BPUT#C,"; errNum.sh"
+BPUT#C,";"
+BPUT#C,"; Define error numbers (generated)"
+BPUT#C,";"
+BPUT#C,"; © 1995 Straylight"
+BPUT#C,";"
+BPUT#C,""
+BPUT#C,tab$+tab$+"["+tab$+":LNOT::DEF:errNum__dfn"
+BPUT#C,tab$+tab$+"GBLL"+tab$+"errNum__dfn"
+BPUT#C,""
+
+curr%=0
+BPUT#C,tab$+tab$+"^"+tab$+"0"
+WHILE errMsg$(curr%)<>"***"
+  BPUT#C,errName$(curr%);
+  IF LEN(errName$(curr%))>7 THEN BPUT#C,tab$; ELSE BPUT#C,tab$+tab$;
+  BPUT#C,"#"+tab$+"1"
+  curr%+=1
+ENDWHILE
+BPUT#C,""
+BPUT#C,tab$+tab$+"]"
+BPUT#C,""
+BPUT#C,tab$+tab$+"END"
+CLOSE#C
+OSCLI "Settype sh.errNum FFF"
+
+END
+
+DATA "Type mismatch: Number needed",err_numNeeded
+DATA "Type mismatch: String needed",err_strNeeded
+DATA "Whole array reference is invalid in this context",err_arrayBad
+DATA "Missing )",err_expBracket
+DATA "Missing #",err_expHash
+DATA "Missing """"",err_expQuote
+DATA "Missing =",err_expEq
+DATA "Missing ,",err_expComma
+DATA "Bad hex",err_badHex
+DATA "Bad binary",err_badBinary
+DATA "Unknown or missing variable",err_unknown
+DATA "Division by zero",err_divZero
+DATA "Out of memory",err_noMem
+DATA "Syntax error",err_syntax
+DATA "Mistake",err_mistake
+DATA "String too long",err_strTooLong
+
+DATA "Missing = in FOR",err_eqInFor
+DATA "Bad FOR control variable",err_badForVar
+DATA "Missing TO",err_expTo
+DATA "The step cannot be zero",err_zStep
+DATA "Not in a FOR loop",err_noFor
+
+DATA "Not in a REPEAT loop",err_noRepeat
+
+DATA "Missing ENDWHILE",err_expEndwhile
+DATA "Not in a WHILE loop",err_noWhile
+
+DATA "Missing ENDIF",err_expEndif
+
+DATA "Missing OF",err_expOf
+DATA "CASE..OF statement must be the last thing on a line",err_afterCase
+DATA "Missing ENDCASE",err_expEndcase
+
+DATA "Missing label",err_expLabel
+DATA "Unknown label",err_noLabel
+
+DATA "Bad DIM statement",err_badDim
+DATA "No end of dimension list )",err_dimKet
+DATA "Arrays cannot be redimensioned",err_reDim
+DATA "Incorrect number of subscripts",err_numSubs
+DATA "Subscript out of range",err_subRange
+DATA "Unknown array",err_ukArray
+
+DATA "Can't use RGET while in a WATCHFOR state",err_rgetInWatch
+DATA "Can't use RGET$ while in a WATCHFOR state",err_rgetSInWatch
+DATA "Can't use LGET while in a WATCHFOR state",err_lgetInWatch
+DATA "Can't use LGET$ while in a WATCHFOR state",err_lgetSInWatch
+DATA "Can't use RINKEY while in a WATCHFOR state",err_rinkeyInWatch
+DATA "Can't use RINKEY$ while in a WATCHFOR state",err_rinkeySInWatch
+DATA "Can't use LINKEY while in a WATCHFOR state",err_linkeyInWatch
+DATA "Can't use LINKEY$ while in a WATCHFOR state",err_linkeySInWatch
+
+DATA "Wrong number of arguments passed to STRING$",err_stringSArgs
+DATA "Wrong number of arguments passed to LEFT$",err_leftSArgs
+DATA "Wrong number of arguments passed to RIGHT$",err_rightSArgs
+DATA "Wrong number of arguments passed to MID$",err_midSArgs
+DATA "Wrong number of arguments passed to INSTR",err_instrSArgs
+
+DATA "Arguments of function/procedure incorrect",err_badArgs
+DATA "No such function/procedure",err_noProc
+DATA "Bad call of function/procedure",err_badCall
+
+DATA "Not in a subroutine",err_notInSub
+DATA "Not in a procedure",err_notInProc
+DATA "Not in a function",err_notInFn
+
+DATA "Too many strings passed to WATCHFOR",err_WFTooMany
+
+DATA "Too many input parameters to SYS/SYSCALL",err_sysTooManyI
+DATA "Too many output parameters to SYS/SYSCALL",err_sysTooManyO
+
+DATA "Out of DATA",err_outOfDATA
+
+DATA "mem_realloc not implemented",err_realloc
+DATA "Not yet implemented",err_lazy
+DATA "The script interpreter has gone wrong",err_erk
+DATA ***,***
+