mirror of https://github.com/markpmlim/EdAsm.git
1 line
13 KiB
Plaintext
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
|