; 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