EdAsm/EDASM.SRC/LINKER/equates.aii

1 line
13 KiB
Plaintext

; This EdAsm/Asm816 source code file was converted to AsmIIGS
; by EdAsmCvtIIGS version 1.2 on 4/4/12 at 7:22:43 AM
; EXPORT TXT_type
; EXPORT X4300
; EXPORT X3F00
; EXPORT CR
; EXPORT srcIOAddr
; EXPORT SPACE
; EXPORT TxtEnd
; EXPORT ExecMode
; EXPORT USRADR
; EXPORT ROMIN2
; EXPORT StackSave
; EXPORT RDKEY
; EXPORT CmdAdr
; EXPORT COUT
; EXPORT CROUT
; EXPORT GETLN
; EXPORT XA900
; EXPORT MON
; EXPORT PRERR
; EXPORT HOME
; EXPORT SETVID
; EXPORT SETKBD
; EXPORT RDROM2
; EXPORT TxtBgn
; EXPORT LoadAdrEditor
; EXPORT KBDSTROBE
; EXPORT KBD
; EXPORT EdAsmDir
; EXPORT cp
; EXPORT ENTRPI
; EXPORT ENTRPJ
; EXPORT I.TH
; EXPORT J.TH
; EXPORT III
; EXPORT JJJ
; EXPORT StartIndex
; EXPORT EndIndex
; EXPORT Jump
; EXPORT NUMRECS
; EXPORT X9200
; EXPORT UpperBound
; EXPORT LowerBound
; EXPORT Z96
; EXPORT msgP
; EXPORT Z8E
; EXPORT Z86
; EXPORT X9100
; EXPORT C.FILEID
; EXPORT C.AUXID
; EXPORT xtrnNbr
; EXPORT XA8E0
; EXPORT Z88
; EXPORT Z9E
; EXPORT C.REQCNT
; EXPORT C.DATABUF
; EXPORT Z82
; EXPORT Z80
; EXPORT C.TRANSCNT
; EXPORT SRCDBUF
; EXPORT SRCP
; EXPORT C.MARK
; EXPORT CurrORG
; EXPORT symP
; EXPORT symbolTab
; EXPORT xtrnRecP
; EXPORT xternTab
; EXPORT entRecP
; EXPORT EntryTab
; EXPORT OptFlagsTab
; EXPORT SWITCH
; EXPORT Value16
; EXPORT C.REFNUM
; EXPORT C.OUTREF
; EXPORT InBuf
; EXPORT PROMPT
; EXPORT PRTERROR
; EXPORT PRODOS8
; EXPORT PageCnt
; EXPORT LineCnt
; EXPORT IsNumSort
; EXPORT WhichType
; EXPORT IsOptions
; EXPORT Option_D
; EXPORT PageOption
; EXPORT EREFF
; EXPORT XRefOption
; EXPORT SORTLMF
; EXPORT MapOption
; EXPORT MemoryMap
; EXPORT IVERSION
; EXPORT MINIVERS
; EXPORT STACK
; EXPORT SaveA
; CHR ";"
;=================================================
; Equates used by EdAsm's modules
;
; ASCII keycodes
;
CTRLA EQU $01
CTRLB EQU $02
CTRLC EQU $03
CTRLD EQU $04
CTRLE EQU $05
CTRLF EQU $06
BEL EQU $07
BS EQU $08
TAB EQU $09
FF EQU $0C
CR EQU $0D
CTRLN EQU $0E
CTRLO EQU $0F
CTRLQ EQU $11
CTRLR EQU $12
CTRLS EQU $13
CTRLT EQU $14
CTRLU EQU $15
CTRLV EQU $16
CTRLW EQU $17
CTRLX EQU $18 ;cancel
ESCAPE EQU $1B
SPACE EQU $20
UNDERSCORE EQU $5F
DEL EQU $7F
;=================================================
; filetypes recognised by the various EdAsm modules
TXT_type EQU $04
BIN_type EQU $06
DIR_type EQU $0D
REL_type EQU $FE
SYS_type EQU $FF
;=================================================
; Apple ][ Standard Zero page
WNDWDTH EQU $21
CH EQU $24
CV EQU $25
BASL EQU $28
INVFLG EQU $32
PROMPT EQU $33
CSWL EQU $36 ;Output hook
KSWL EQU $38 ;Input hook
A1 EQU $3C
A2 EQU $3E
A4 EQU $42
;=================================================
; These zpage locations are referenced by 2 or
; more of EdAsm's modules
LOMEM EQU $0A ;=$0801
TxtBgn EQU $0A ;Reg5 of Sweet16
TxtEnd EQU $0E ;Reg7
HIMEM EQU $0C ;=$9900 Not used by EDASM.ASM
StackSave EQU $49 ;Save area for H/W stack ptr
VIDEOSLT EQU $50 ;=$Cs where s=1-3 (if 80-col video card present)
FileType EQU $51 ;filetype
ExecMode EQU $53 ;Exec mode
PrtrMode EQU $54 ;=$80,$00 - Printer ON/OFF
TABchar EQU $5F ;Set by Editor
PrintColumn EQU $61 ;curr print col
UserTABTbl EQU $68 ;$68-$71 User defined TAB table
PrintFlag EQU $73 ;-1=Print Cmd, 0=List Cmd
STACKP2 EQU $73 ;Save area for H/W stack ptr on fatal err
SwapMode EQU $74 ;Split-buf mode 0-normal,1=buf1,2=buf2
CaseMode EQU $75 ;ucase/lcase
CmdDelim EQU $78 ;Cmd Delimiter/Separator
TruncFlag EQU $79 ;=$FF-truncate comments
;=================================================
X2000 EQU $2000 ;Load & Exec addr of SYS Files
LoadAdrEditor EQU $8900 ;Load Addr of Editor Module
;=================================================
; 1024-byte I/O buffers for ProDOS8
XA900 EQU $A900
XAD00 EQU $AD00
;=================================================
; EdAsm Global Page
; Used to pass parameters btwn EdAsm's
; modules viz Editor, Assembly & Linker
; The EI must be resident all the times
; EdAsm Interpreter's Global Page
; Used to pass parameters btwn EdAsm's
; modules viz Editor, Assembly & Linker
; The EI must be resident all the times
XBD00 EQU $BD00 ;General Purpose 128-byte buffers
XBD80 EQU $BD80 ; used by EdAsm's modules
XBE00 EQU $BE00 ;$BE00-$BE3F (curr Pathname)
DEVCTLS EQU $BE40 ;($BE40-$BE61) Init to $C3 if 80-col card present
TABTable EQU $BE60 ;$BE60-$BE62
DATETIME EQU $BE64 ;$BE64-$73
EdAsmDir EQU $BE79 ;Where EDASM is stored on disk
PrintError EQU $BEFC ;EdAsm Interpreter error message rtn
;=================================================
; Apple ][
STACK EQU $0100 ;6502 H/W stack
InBuf EQU $0200
TxBuf2 EQU $0280
SOFTEV EQU $03F2 ;RESET vector
PWREDUP EQU $03F4 ;Power up byte
USRADR EQU $03F8 ;ctrl-Y vector
;=================================================
; Some ProDOS 8 Global Page loctions referenced
; by EdAsm's modules
PRODOS8 EQU $BF00 ;MLI entry point
LASTDEV EQU $BF30
MemoryMap EQU $BF58 ;Memory bit map
P8DATE EQU $BF90
P8TIME EQU $BF92
MACHID EQU $BF98
SLTBYT EQU $BF99 ;Slot ROM map
CmdAdr EQU $BF9C ;last MLI call return address
MINIVERS EQU $BFFC ;minimum interpreter version
IVERSION EQU $BFFD ;interpreter version
;=================================================
; Apple ][ Soft Switches
KBD EQU $C000
CLR80VID EQU $C00C
KBDSTROBE EQU $C010
BUTN3 EQU $C060
BUTN2 EQU $C063
RDBANK2 EQU $C080 ;Read only RAM bank 2; no write
ROMIN2 EQU $C081 ;Read ROM/Write RAM bank 2 (RR)
RDROM2 EQU $C082 ;Read ROM; no write
LCBANK2 EQU $C083 ;Read/Write RAM bank 2 (RR)
BASICINT EQU $C300
XC30B EQU $C30B ;card identification
XC30C EQU $C30C
XD000 EQU $D000 ;LC Bank2 - SW16 or Asm's Print Symbol Table
BASCLD EQU $E000 ;AppleSoft ColdStart
;=================================================
; Apple ][ Monitor Entry Points
SWEET16 EQU $F689 ;Original IntegerBASIC ROM entry point
PRNTAX EQU $F941
PRBLNK EQU $F948
INIT EQU $FB2F
BELL1 EQU $FBDD
VTABZ EQU $FC24
HOME EQU $FC58
CLREOL EQU $FC9C
WAIT EQU $FCA8
RDKEY EQU $FD0C
RDCHAR EQU $FD35
GETLN EQU $FD6A ;input line w/prompt
CROUT EQU $FD8E ;issue carriage return
COUT EQU $FDED ;output char via user's I/O
COUT1 EQU $FDF0 ;output via video screen
MOVE EQU $FE2C
SETNORM EQU $FE84
SETKBD EQU $FE89
SETVID EQU $FE93
PRERR EQU $FF2D
MON EQU $FF65
MONZ EQU $FF69
IRQV EQU $FFFE
;=================================================
; SW16 registers when using 6502 instructions
REG0 EQU $00 ;Doubles as the Accumulator
REG1 EQU $02
REG2 EQU $04
REG3 EQU $06
REG4 EQU $08
REG5 EQU $0A ;Points @ 1st char of curr edited file
REG6 EQU $0C ;HiMem of EdAsm
REG7 EQU $0E ;Points @ last char of curr edited file
REG8 EQU $10
REG9 EQU $12
REG10 EQU $14
REG11 EQU $16
REG12 EQU $18 ;Subroutine return stack pointer
REG13 EQU $1A ;Result of a comparison instruction
REG14 EQU $1C ;Status Register
REG15 EQU $1E ;Program Counter
;=================================================
; Sweet16 registers
; These labels are for the EdAsm assembler
; For Merlin8, Rn are pre-defined and
; do not need to be declared.
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12 ;Subroutine return stack pointer
R13 EQU 13 ;Result of a comparison instruction
R14 EQU 14 ;Status Register
R15 EQU 15 ;Program Counter
;=================================================
; Lifted from ProDOS v1.7
; xdos parameters:
C_PCNT EQU $0 ; (count)
C_DEVNUM EQU $1 ; (value)
C_REFNUM EQU $1 ; (value)
C_INTNUM EQU $1 ; (value)
C_PATH EQU $1 ;&2 (pointer)
C_ISNEWL EQU $2 ; (mask)
C_DATABUF EQU $2 ;&3 (value)
C_BUFADR EQU $2 ;&3 (address)
C_INTADR EQU $2 ;&3 (address)
C_MARK EQU $2 ;->4 (value)
C_EOF EQU $2 ;->4 (value)
C_ATTR EQU $3 ; (flags)
C_NEWL EQU $3 ; (character)
C_BUFPTR EQU $3 ;&4 (pointer)
C_NEWPATH EQU $3 ;&4 (pointer)
C_FILEID EQU $4 ; (value)
C_REQCNT EQU $4 ;&5 (value)
C_BLKNUM EQU $4 ;&5 (address)
C_OUTREF EQU $5
C_AUXID EQU $5 ;&6 (value)
C_TRANSCNT EQU $6 ;&7 (value)
C_FKIND EQU $7 ; (value)
C_DATE EQU $8 ;&9 (value)
C_OUTBLK EQU $8 ;&9 (count)
C_TIME EQU $A ;&b (value)
C_MODDATE EQU $A ;&b (value)
C_MODTIME EQU $C ;&d (value)
C_CREDATE EQU $E ;&f (value)
C_CRETIME EQU $10 ;&11 (value)
;=================================================
; Equates specific to EdAsm's Linker Module
;=================================================
; Zero page usage by Linker
Z80 EQU $80
Z82 EQU $82
srcP EQU $84 ;ptr into SRC file data buf
Z86 EQU $86 ;ptr into tempESD buf ($9100)
Z88 EQU $88 ;General purpose rec ptr
entRecP EQU $8A ;ptr into DEF/ENTRY table 24-byte records
xtrnRecP EQU $8C ;ptr into REF/EXTRN table 8-byte records
symP EQU $8E ;ptr into $9200-$A8DF 16-byte records (SymbolicName table)
Z8E EQU $8E ;re-cycled
cp EQU $90 ;ptr into cmd line buf
msgP EQU $92
CurrORG EQU $94 ;Starting PC of curr src file
objCodeLen EQU $96 ;or Curr EOF of REL OBJ file
LowerBound EQU $98 ;old offset into curr code image
UpperBound EQU $9A ;curr offset into curr code (why is $9B not used?)
SaveA EQU $9C ; image in memory
Z9E EQU $9E ;Flag if a src PN is preceded by an ;
xtrnNbr EQU $9F ;# of EXTRNs in REL OBJ file's ESD
WhichType EQU $A0 ;filetype of target obj file BIN=$01,REL=$80,SYS=$02
IsOptions EQU $A1 ;TRUE when the OPTION cmd is encountered
OptFlagsTab EQU $A2 ;Table of current option flags
MapOption EQU $A2 ;default ON
EntryRefOption EQU $A3 ;default ON
SortOption EQU $A4 ;default ON
XRefOption EQU $A5 ;default ON
IsNumSort EQU $A6 ;default OFF
Option_D EQU $A7 ;default OFF
PageOption EQU $A8 ;default OFF
; Use to help set flags $A2-$A8
; as well as return as a 16-bit value
SWITCH EQU $AB ;ON/OFF ($80/$00)
Value16 EQU $AB ;Value of arithmetic/numeric expression
LineCnt EQU $AD
PageCnt EQU $AE
JJJ EQU $AF ;use during an internal sort
III EQU $B1
StartIndex EQU $B3
EndIndex EQU $B5
Jump EQU $B7
NUMRECS EQU $B9 ;Total # of records in ENTRY table
J_TH EQU $BB
I_TH EQU $BD
ENTRPJ EQU $BF
ENTRPI EQU $C1
;=================================================
; Memory map by Linker
srcIOAddr EQU $0800 ;1024-byte buf for REL src file(s) ($0800-$0BFF)
srcDataBuf EQU $0C00 ;R/W data buf for file(s) ($0C00-$1FFF)
X3F00 EQU $3F00 ;1024-byte buf for OBJ/tempESD files ($3F00-$42FF)
X4300 EQU $4300 ;1024-byte buf for LINKMAP/tempRLD file ($4300-$46FF)
EntryTab EQU $4700 ;DEFine table (24-byte records) ($4700-$70FF)
xternTab EQU $7100 ;REFerence table (8-byte records) ($7100-$90FF)
X9100 EQU $9100 ;databuf-tempESD/REL Obj file ($9100-$91FF)
X9200 EQU $9200 ;1 mem page data buf for code image read
symbolTab EQU $9200 ;Symbol table (16-byte records) ($9200-$A8DF?)
XA8E0 EQU $A8E0 ;Upper limit of Symbol table
currPfxBuf EQU $BB80 ;Curr Prefix set by user in Editor's environment
;=================================================
; There are flags which describes the characteristics
; of a symbol - ref pg 231
undefined EQU $80
unreferenced EQU $40
relative EQU $20
external EQU $10
entry EQU $08
macro EQU $04
nosuchlabel EQU $02
fwdreferenced EQU $01
maxSrcFiles EQU 50 ;max # of SRC file that can be linked
NULL EQU 0
Str15 RECORD 0
elements DS.B 16
sizeof EQU * ;16 bytes
ENDR
; ENTRY Record
EntryRecord RECORD 0
symbolName DS Str15 ;offset: 0 p-String up to 16 chars including len byte
fileNum DS.B 1 ;offset: 16 file # of src file (start fr 0)
flags DS.B 1 ;offset: 17 symbol-type
relAddr DS.W 1 ;offset: 18 relocated addr
head DS.W 1 ;offset: 20 Ptr to EXTRN record
tail DS.W 1 ;offset: 22 Ptr to EXTRN record
sizeof EQU * ;24 bytes
ENDR
; EXTRN record
XtrnRecord RECORD 0
next EQU *
symNamePtr DS.W 1 ;offset: 0 ptr to a record in SymbolicName table ($9200)
entryPtr DS.W 1 ;offset: 2 Ptr to an ENTRY record; NULL initially
fileNum DS.B 1 ;offset: 4 file # of src file (also called module #)
flags DS.B 1 ;offset: 5 flagByte
symbolNum DS.B 1 ;offset: 6 symbol # referred to by an RLD record
externNum DS.B 1 ;offset: 7 extern number (< 255)
sizeof EQU * ;8 bytes
ENDR
; Symbolic Name Record
SymbolRecord RECORD 0
externNum EQU *
symbolName DS Str15 ;p-String up to 16 chars including len byte
sizeof EQU * ;16 bytes
ENDR
; Relocation Dictionary record - variant record
RLDRecord RECORD 0
flags DS.B 1 ;offset: 0 flagByte
codeOffset DS.W 1 ;offset: 1 field offset in code
esdNum EQU *
low8bits DS.B 1 ;offset: 3
sizeof EQU * ;4 bytes
ENDR
; External Symbol Directory Record - mini record after
; an external symbolic name - variant record
ESDRecord RECORD 0
flags DS.B 1 ;offset: 0 flagByte
relAddr EQU * ;If symbol is ENTRY-type
externNum DS.B 1 ;offset: 1 if symbol is EXTRN-type
unused DS.B 1 ;offset: 2
sizeof EQU * ;3 bytes
ENDR
LoadMapRecord RECORD 0
entryPtr DS.W 1 ;offset: 0 ptr to an ENTRY record
relAddr DS.W 1 ;offset: 2 relocated address
sizeof EQU * ;4 bytes
ENDR