2018-09-28 17:05:11 +00:00
|
|
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
|
|
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
|
|
|
;
|
|
|
|
; Sources:
|
|
|
|
; What's Where in the Apple, by William F. Luebbert
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
; S-C DocuMentor: Applesoft, by Bob Sander-Cederlof
|
2018-09-28 17:05:11 +00:00
|
|
|
|
|
|
|
*SYNOPSIS Applesoft BASIC addresses and constants
|
|
|
|
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_USRVEC @ $0A 3 ;USR() command vector
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_CHARAC @ $0D ;used by string utility
|
|
|
|
BAS_ENDCHR @ $0E ;used by string utility
|
2019-10-03 21:11:16 +00:00
|
|
|
BAS_VALTYP @ $11 2 ;flag for last FAC operation ($00=num, $FF=str)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_SUBFLG @ $14 ;subscript flag ($00=allowed, $80=not)
|
2019-09-16 23:58:32 +00:00
|
|
|
BAS_HCOLOR1 @ $1C ;hi-res color mask
|
|
|
|
BAS_COUNTH @ $1D ;hi-res high-order byte of step for line
|
2019-09-25 23:10:07 +00:00
|
|
|
BAS_HBASL @ $26 ;base address for hi-res drawing (lo part)
|
|
|
|
BAS_HBASH @ $27 ;base address for hi-res drawing (hi part)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_HMASK @ $30 ;hi-res graphics on-the-fly bit mask
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_LINNUM @ $50 2 ;line number (2b)
|
|
|
|
BAS_TEMPPT @ $52 2 ;temporary point (2b)
|
|
|
|
BAS_INDEX @ $5E 2 ;temp (stack) pointer for moving strings (2b)
|
|
|
|
BAS_TEXTTAB @ $67 2 ;pointer to start of Applesoft program (2b)
|
|
|
|
BAS_VARTAB @ $69 2 ;pointer to start of Applesoft variables (2b)
|
|
|
|
BAS_ARYTAB @ $6B 2 ;pointer to start of Applesoft array space (2b)
|
|
|
|
BAS_STREND @ $6D 2 ;pointer to end of numeric storage (2b)
|
|
|
|
BAS_FRETOP @ $6F 2 ;pointer to end of string storage (2b)
|
|
|
|
BAS_MEMSIZE @ $73 2 ;HIMEM (2b)
|
|
|
|
BAS_CURLIN @ $75 2 ;current line number (2b)
|
|
|
|
BAS_OLDLIN @ $77 2 ;last line executed (2b)
|
2019-10-03 21:11:16 +00:00
|
|
|
BAS_OLDTEXT @ $79 2 ;old text pointer (2b)
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_DATLIN @ $7B 2 ;current line # from which data is being read (2b)
|
|
|
|
BAS_DATPTR @ $7D 2 ;points to mem from which data is being read (2b)
|
|
|
|
BAS_VARNAM @ $81 2 ;holds last-used variable's name (2b)
|
|
|
|
BAS_VARPNT @ $83 2 ;pointer to last-used variable's value (2b)
|
|
|
|
BAS_FORPNT @ $85 2 ;general pointer (2b)
|
|
|
|
BAS_JMPADRS @ $90 3 ;jump address; $90 is set to $4C (3b)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_TEMP1 @ $93 ;fp math register
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_HIGHDS @ $94 2 ;block copy pointer (2b)
|
|
|
|
BAS_HIGHTR @ $96 2 ;block copy pointer (2b)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_TEMP2 @ $98 ;fp math register
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_LOWTR @ $9B 2 ;general pointer (2b)
|
|
|
|
BAS_FAC @ $9D 6 ;floating point accumulator (6b)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_FACMO = $A0 ;middle-order byte of mantissa of FAC
|
|
|
|
BAS_FACLO = $A1 ;low-order byte of mantissa of FAC
|
2019-09-16 23:58:32 +00:00
|
|
|
BAS_FACSIGN @ $A2 ;single byte sign of FAC
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_ARG @ $A5 6 ;secondary floating point accumulator (6b)
|
|
|
|
BAS_STRNG1 @ $AB 2 ;pointer to a string (2b)
|
|
|
|
BAS_STRNG2 @ $AD 2 ;pointer to a string (2b)
|
|
|
|
BAS_PRGEND @ $AF 2 ;pointer to end of program (2b)
|
2019-09-16 23:58:32 +00:00
|
|
|
BAS_CHRGET @ $B1 ;get next character or Applesoft token
|
|
|
|
BAS_CHRGOT @ $B7 ;get next, but don't advance TXTPTR
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_TXTPTR @ $B8 2 ;points at next char or token (2b)
|
|
|
|
BAS_RND @ $C9 5 ;floating point random number (5b)
|
2019-09-16 23:58:32 +00:00
|
|
|
BAS_AUTORUN @ $D6 ;set to $80 to auto-run
|
|
|
|
BAS_ERRFLG @ $D8 ;$80 if onerr active
|
|
|
|
BAS_HPAG @ $E6 ;hi-res page to draw on ($20 or $40)
|
|
|
|
BAS_SCALE @ $E7 ;hi-res graphics scale factor
|
2019-10-03 21:11:16 +00:00
|
|
|
BAS_HSHAPE @ $E8 2 ;hi-res shape table pointer (2b)
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_FIRST @ $F0 ;used for lo-res plot coordinates
|
2019-10-27 18:12:22 +00:00
|
|
|
BAS_SPEEDZ @ $F1 ;controls text output speed
|
2019-09-21 02:04:10 +00:00
|
|
|
BAS_ORMASK @ $F3 ;mask for output control
|
|
|
|
BAS_REMSTK @ $F8 ;stack pointer saved before each statement
|
2018-09-28 17:05:11 +00:00
|
|
|
|
Allow explicit widths in project/platform symbols, part 1
The ability to give explicit widths to local variables worked out
pretty well, so we're going to try adding the same thing to project
and platform symbols.
The first step is to allow widths to be specified in platform files,
and set with the project symbol editor. The DefSymbol editor is
also used for local variables, so a bit of dancing is required.
For platform/project symbols the width is optional, and is totally
ignored for constants. (For variables, constants are used for the
StackRel args, so the width is meaningful and required.)
We also now show the symbol's type (address or constant) and width
in the listing. This gets really distracting when overused, so we
only show it when the width is explicitly set. The default width
is 1, which most things will be, so users can make an aesthetic
choice there. (The place where widths make very little sense is when
the symbol represents a code entry point, rather than a data item.)
The maximum width of a local variable is now 256, but it's not
allowed to overlap with other variables or run of the end of the
direct page. The maximum width of a platform/project symbol is
65536, with bank-wrap behavior TBD.
The local variable table editor now refers to stack-relative
constants as such, rather than simply "constant", to make it clear
that it's not just defining an 8-bit constant.
Widths have been added to a handful of Apple II platform defs.
2019-10-01 21:58:24 +00:00
|
|
|
BAS_AMPERV @ $03F5 3 ;JMP to function that handles Applesoft '&' cmds
|
2018-09-28 17:05:11 +00:00
|
|
|
|
|
|
|
;
|
|
|
|
; Useful Applesoft routines.
|
|
|
|
; TODO: there are many more
|
|
|
|
;
|
2019-09-16 23:58:32 +00:00
|
|
|
BAS_ERROR @ $D412 ;print error based on X-reg
|
|
|
|
BAS_FRMNUM @ $DD67 ;evalute expression at TXTPTR, result into FAC
|
|
|
|
BAS_SYN_ERROR @ $DEC9 ;throw SYNTAX ERROR
|
|
|
|
BAS_CHKCOM @ $DEBE ;checks TXTPTR for comma
|
|
|
|
BAS_ILLQ_ERROR @ $E199 ;throw ILLEGAL QUANTITY ERROR
|
|
|
|
BAS_GETADR @ $E752 ;convert FAC to 2-byte integer in LINNUM
|
|
|
|
BAS_GETBYT @ $E6F8 ;gets byte, in X/FACLO
|
|
|
|
BAS_HFNS @ $F6B9 ;get hi-res x/y for hplot
|
2018-09-28 17:05:11 +00:00
|
|
|
|
|
|
|
;
|
|
|
|
; Applesoft BASIC tokens.
|
|
|
|
;
|
|
|
|
*TAG Applesoft-Tokens
|
2019-09-16 23:58:32 +00:00
|
|
|
TOK_END = $80
|
|
|
|
TOK_FOR = $81
|
|
|
|
TOK_NEXT = $82
|
|
|
|
TOK_DATA = $83
|
|
|
|
TOK_INPUT = $84
|
|
|
|
TOK_DEL = $85
|
|
|
|
TOK_DIM = $86
|
|
|
|
TOK_READ = $87
|
|
|
|
TOK_GR = $88
|
|
|
|
TOK_TEXT = $89
|
|
|
|
TOK_PR = $8a
|
|
|
|
TOK_IN = $8b
|
|
|
|
TOK_CALL = $8c
|
|
|
|
TOK_PLOT = $8d
|
|
|
|
TOK_HLIN = $8e
|
|
|
|
TOK_VLIN = $8f
|
|
|
|
TOK_HGR2 = $90
|
|
|
|
TOK_HGR = $91
|
|
|
|
TOK_HCOLOR = $92
|
|
|
|
TOK_HPLOT = $93
|
|
|
|
TOK_DRAW = $94
|
|
|
|
TOK_XDRAW = $95
|
|
|
|
TOK_HTAB = $96
|
|
|
|
TOK_HOME = $97
|
|
|
|
TOK_ROT = $98
|
|
|
|
TOK_SCALE = $99
|
|
|
|
TOK_SHLOAD = $9a
|
|
|
|
TOK_TRACE = $9b
|
|
|
|
TOK_NOTRACE = $9c
|
|
|
|
TOK_NORMAL = $9d
|
|
|
|
TOK_INVERSE = $9e
|
|
|
|
TOK_FLASH = $9f
|
|
|
|
TOK_COLOR = $a0
|
|
|
|
TOK_POP = $a1
|
|
|
|
TOK_VTAB = $a2
|
|
|
|
TOK_HIMEM = $a3
|
|
|
|
TOK_LOMEM = $a4
|
|
|
|
TOK_ONERR = $a5
|
|
|
|
TOK_RESUME = $a6
|
|
|
|
TOK_RECALL = $a7
|
|
|
|
TOK_STORE = $a8
|
|
|
|
TOK_SPEED = $a9
|
|
|
|
TOK_LET = $aa
|
|
|
|
TOK_GOTO = $ab
|
|
|
|
TOK_RUN = $ac
|
|
|
|
TOK_IF = $ad
|
|
|
|
TOK_RESTORE = $ae
|
|
|
|
TOK_AMPER = $af
|
|
|
|
TOK_GOSUB = $b0
|
|
|
|
TOK_RETURN = $b1
|
|
|
|
TOK_REM = $b2
|
|
|
|
TOK_STOP = $b3
|
|
|
|
TOK_ON = $b4
|
|
|
|
TOK_WAIT = $b5
|
|
|
|
TOK_LOAD = $b6
|
|
|
|
TOK_SAVE = $b7
|
|
|
|
TOK_DEF = $b8
|
|
|
|
TOK_POKE = $b9
|
|
|
|
TOK_PRINT = $ba
|
|
|
|
TOK_CONT = $bb
|
|
|
|
TOK_LIST = $bc
|
|
|
|
TOK_CLEAR = $bd
|
|
|
|
TOK_GET = $be
|
|
|
|
TOK_NEW = $bf
|
|
|
|
TOK_TAB = $c0
|
|
|
|
TOK_TO = $c1
|
|
|
|
TOK_FN = $c2
|
|
|
|
TOK_SPC = $c3
|
|
|
|
TOK_THEN = $c4
|
|
|
|
TOK_AT = $c5
|
|
|
|
TOK_NOT = $c6
|
|
|
|
TOK_STEP = $c7
|
|
|
|
TOK_PLUS = $c8
|
|
|
|
TOK_MINUS = $c9
|
|
|
|
TOK_MULT = $ca
|
|
|
|
TOK_DIV = $cb
|
|
|
|
TOK_EXPOP = $cc
|
|
|
|
TOK_AND = $cd
|
|
|
|
TOK_OR = $ce
|
|
|
|
TOK_GREATER = $cf
|
|
|
|
TOK_EQUAL = $d0
|
|
|
|
TOK_LESSER = $d1
|
|
|
|
TOK_SGN = $d2
|
|
|
|
TOK_INT = $d3
|
|
|
|
TOK_ABS = $d4
|
|
|
|
TOK_USR = $d5
|
|
|
|
TOK_FRE = $d6
|
|
|
|
TOK_SCRN = $d7
|
|
|
|
TOK_PDL = $d8
|
|
|
|
TOK_POS = $d9
|
|
|
|
TOK_SQR = $da
|
|
|
|
TOK_RND = $db
|
|
|
|
TOK_LOG = $dc
|
|
|
|
TOK_EXP = $dd
|
|
|
|
TOK_COS = $de
|
|
|
|
TOK_SIN = $df
|
|
|
|
TOK_TAN = $e0
|
|
|
|
TOK_ATN = $e1
|
|
|
|
TOK_PEEK = $e2
|
|
|
|
TOK_LEN = $e3
|
|
|
|
TOK_STR = $e4
|
|
|
|
TOK_VAL = $e5
|
|
|
|
TOK_ASC = $e6
|
|
|
|
TOK_CHR = $e7
|
|
|
|
TOK_LEFT = $e8
|
|
|
|
TOK_RIGHT = $e9
|
|
|
|
TOK_MID = $ea
|
2018-10-09 01:03:04 +00:00
|
|
|
; end of tokens
|