a2-memory-map
v1.0.4
Published
Database of Apple II memory addresses
Downloads
6
Readme
Apple II Memory Map
This is the TypeScript binding to a database of Apple II special addresses intended to be used with language servers. The central element is the file map.json
which maps addresses to a set of descriptive strings.
Map Records
The map records correspond to the interface
interface AddressInfo {
brief: string | undefined,
ctx: string | undefined,
desc: string,
label: string | undefined,
note: string | undefined,
subctx: string | undefined,
type: string
}
The whole database is retrieved as a Map
using
get_all() : Map<string,AddressInfo>
To get a single record use
get_one(addr: number): AddressInfo | undefined
The argument addr
can range from -32767 to 65535. As an example get_one(0xfded)
will give
{
brief: 'Print character in A',
desc: 'Invoke output routine whose address is in (56). Usually prints character in A.',
label: 'COUT',
type: 'ROM routine'
}
AddressInfo Fields
brief
: short description suitable for display in a selection boxctx
: notes on limiting context, such as hardware requirements, applicability to given language, etc.desc
: long description suitable for hoverslabel
: suggested assembler labelnote
: any other notessubctx
: notes on sub context, e.g., specific aspect of a languagetype
: data type (e.g.word
) or operation type (e.g.ROM routine
,soft switch
)
Multi-context Records
The map.json
file uses logic expressions to delineate information by context, e.g., ctx
might have the value "Applesoft | Integer BASIC"
. The TypeScript interface provides a function to parse the logic and produce an array of records, with each element corresponding to a given context:
get_one_and_split(addr: number): Array<AddressInfo> | undefined
If there is no splitting of the ctx
field, no other fields will be split. It is not required to use this function. If get_one
is used instead, downstream will receive the logic expressions, which can be parsed in any manner desired.