mirror of
https://github.com/fadden/6502bench.git
synced 2024-12-03 05:49:48 +00:00
e82dc31da6
The Disk ][ I/O locations are generally accessed as an offset, using something like "LDA $C08n,X". However the range from $C080-C08F is already used for language card in slot 0. SourceGen doesn't have a way to distinguish between indexed and direct accesses, and even if it did there's no way to separate one peripheral card from another without knowing the contents of the CPU register. As a workaround, the Disk ][ definitions are now in a separate symbol file. When loaded, the definitions replace the base slot 0 equates. I figure Disk ][ accesses are more common than language card manipulation, so I'm making it a default for new projects. Existing projects that reference the Disk ][ symbols (which existed, but as constants) will need to be updated to include the new .sym65.
179 lines
8.2 KiB
Plaintext
179 lines
8.2 KiB
Plaintext
; Copyright 2018 faddenSoft. All Rights Reserved.
|
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
|
;
|
|
; Sources:
|
|
; NiftyList, by Dave Lyons
|
|
; Various Apple II reference materials found online
|
|
|
|
*SYNOPSIS Symbols from the Cxxx I/O area, common to most Apple II models.
|
|
|
|
; There's a lot here that you wouldn't find on an Apple ][+, but since
|
|
; this is for a disassembler it's okay to have extra stuff so long as it
|
|
; doesn't conflict.
|
|
KBD < $C000 ;R last key pressed + 128
|
|
CLR80COL > $C000 ;W use $C002-C005 for aux mem (80STOREOFF)
|
|
SET80COL @ $C001 ;W use PAGE2 for aux mem (80STOREON)
|
|
RDMAINRAM @ $C002 ;W if 80STORE off: read main mem $0200-BFFF
|
|
RDCARDRAM @ $C003 ;W if 80STORE off: read aux mem $0200-BFFF
|
|
WRMAINRAM @ $C004 ;W if 80STORE off: write main mem $0200-BFFF
|
|
WRCARDRAM @ $C005 ;W if 80STORE off: write aux mem $0200-BFFF
|
|
SETSLOTCXROM @ $C006 ;W use peripheral ROM ($C100-CFFF)
|
|
SETINTCXROM @ $C007 ;W use internal ROM ($C100-CFFF)
|
|
SETSTDZP @ $C008 ;W use main stack and zero page
|
|
SETALTZP @ $C009 ;W use aux stack and zero page
|
|
SETINTC3ROM @ $C00A ;W use internal slot 3 ROM
|
|
SETSLOTC3ROM @ $C00B ;W use external slot 3 ROM
|
|
CLR80VID @ $C00C ;W disable 80-column display mode
|
|
SET80VID @ $C00D ;W enable 80-column display mode
|
|
CLRALTCHAR @ $C00E ;W use primary char set
|
|
SETALTCHAR @ $C00F ;W use alternate char set
|
|
KBDSTRB @ $C010 ;RW keyboard strobe
|
|
RDLCBNK2 @ $C011 ;R bit 7: reading from LC bank 2 ($Dx)?
|
|
RDLCRAM @ $C012 ;R bit 7: reading from LC RAM?
|
|
RDRAMRD @ $C013 ;R bit 7: reading from aux/alt 48K?
|
|
RDRAMWRT @ $C014 ;R bit 7: writing to aux/alt 48K?
|
|
RDCXROM @ $C015 ;R bit 7: using internal slot ROM?
|
|
RDALTZP @ $C016 ;R bit 7: using alt zero page, stack, & LC?
|
|
RDC3ROM @ $C017 ;R bit 7: using external (slot 3) ROM?
|
|
RD80COL @ $C018 ;R bit 7: 80STORE is on?
|
|
RDVBLBAR @ $C019 ;R bit 7: not VBL (VBL signal is low)?
|
|
RDTEXT @ $C01A ;R bit 7: using text mode?
|
|
RDMIX @ $C01B ;R bit 7: using mixed mode?
|
|
RDPAGE2 @ $C01C ;R bit 7: using page 2?
|
|
RDHIRES @ $C01D ;R bit 7: using hi-res graphics?
|
|
ALTCHARSET @ $C01E ;R bit 7: using alt char set?
|
|
RD80VID @ $C01F ;R bit 7: using 80 columns?
|
|
TAPEOUT @ $C020 ;RW toggle caseette tape output
|
|
MONOCOLOR @ $C021 ;W color/mono
|
|
TBCOLOR @ $C022 ;RW screen color (low is BG, high is FG)
|
|
VGCINT @ $C023 ;R VGC interrupts
|
|
MOUSEDATA @ $C024 ;R mouse data: high bit is button
|
|
KEYMODREG @ $C025 ;R modifier key state
|
|
DATAREG @ $C026 ;RW ADB command/data
|
|
KMSTATUS @ $C027 ;RW ADB status
|
|
ROMBANK @ $C028 ;RW ROM bank select (IIc Plus)
|
|
NEWVIDEO @ $C029 ;RW video select (SHR)
|
|
LANGSEL @ $C02B ;RW ROM bank select
|
|
CHARROM @ $C02C ;R addr for character ROM test
|
|
SLTROMSEL @ $C02D ;RW slot vs. ROM selection
|
|
VERTCNT @ $C02E ;R read video counter bits (V5-VB)
|
|
HORIZCNT @ $C02F ;R read video counter bits (VA-H0)
|
|
SPKR @ $C030 ;RW toggle speaker
|
|
DISKREG @ $C031 ;RW disk interface
|
|
SCANINT @ $C032 ;W VGC interrupt clear
|
|
CLOCKDATA @ $C033 ;RW battery RAM interface
|
|
CLOCKCTL @ $C034 ;RW bits 0-3 = border color
|
|
SHADOW @ $C035 ;RW inhibit shadowing
|
|
CYAREG @ $C036 ;RW Configure Your Apple
|
|
DMAREG @ $C037 ;RW
|
|
SCCBREG @ $C038 ;RW SCC command channel B
|
|
SCCAREG @ $C039 ;RW SCC command channel A
|
|
SCCBDATA @ $C03A ;RW SCC data channel B
|
|
SCCADATA @ $C03B ;RW SCC data channel A
|
|
SOUNDCTL @ $C03C ;RW sound settings (0-3=volume)
|
|
SOUNDDATA @ $C03D ;RW sound data
|
|
SOUNDADRL @ $C03E ;RW low pointer
|
|
SOUNDADRH @ $C03F ;RW high pointer
|
|
STROBE @ $C040 ;R game I/O strobe
|
|
INTEN @ $C041 ;RW read VBL interrupt
|
|
|
|
MMDELTAX @ $C044 ;R mouse delta movement X
|
|
MMDELTAY @ $C045 ;R mouse delta movement Y
|
|
DIAGTYPE @ $C046 ;W self-test diagnostics
|
|
CLRVBLINT @ $C047 ;W clear VBL interrupt
|
|
CLRXYINT @ $C048 ;W clear XY interrupt
|
|
|
|
EMUBYTE @ $C04F ;RW used by emulators to identify themselves
|
|
|
|
TXTCLR @ $C050 ;RW display graphics
|
|
TXTSET @ $C051 ;RW display text
|
|
MIXCLR @ $C052 ;RW display full screen
|
|
MIXSET @ $C053 ;RW display split screen
|
|
TXTPAGE1 @ $C054 ;RW display page 1
|
|
TXTPAGE2 @ $C055 ;RW display page 2 (or read/write aux mem)
|
|
LORES @ $C056 ;RW display lo-res graphics
|
|
HIRES @ $C057 ;RW display hi-res graphics
|
|
SETAN0 @ $C058 ;RW annunciator 0 off
|
|
CLRAN0 @ $C059 ;RW annunciator 0 on
|
|
SETAN1 @ $C05A ;RW annunciator 1 off
|
|
CLRAN1 @ $C05B ;RW annunciator 1 on
|
|
SETAN2 @ $C05C ;RW annunciator 2 off
|
|
CLRAN2 @ $C05D ;RW annunciator 2 on
|
|
SETAN3 @ $C05E ;RW annunciator 3 off
|
|
SETDHIRES = $C05E ;W if IOUDIS set, turn on double hi-res
|
|
CLRAN3 @ $C05F ;RW annunciator 3 on
|
|
CLRDHIRES = $C05F ;W if IOUDIS set, turn off double hi-res
|
|
TAPEIN @ $C060 ;R read cassette input
|
|
BUTN3 = $C060 ;R switch input 3
|
|
BUTN0 @ $C061 ;R switch input 0 / open-apple
|
|
BUTN1 @ $C062 ;R switch input 1 / closed-apple
|
|
BUTN2 @ $C063 ;R switch input 2 / shift key
|
|
PADDL0 @ $C064 ;R analog input 0
|
|
PADDL1 @ $C065 ;R analog input 1
|
|
PADDL2 @ $C066 ;R analog input 2
|
|
PADDL3 @ $C067 ;R analog input 3
|
|
STATEREG @ $C068 ;RW address state
|
|
|
|
TESTREG @ $C06D ;test mode
|
|
CLTRM @ $C06E ;clear test mode
|
|
ENTM @ $C06F ;enable test mode
|
|
PTRIG @ $C070 ;RW analog input reset
|
|
|
|
RDIOUDIS < $C07E ;R status of IOU disabling
|
|
SETIOUDIS > $C07E ;W disable IOU
|
|
RDDHIRES < $C07F ;R status of double hi-res
|
|
CLRIOUDIS > $C07F ;W enable IOU
|
|
|
|
; $C080 ;RW read RAM bank 2, write off
|
|
ROMIN @ $C081 ;RWx2 read ROM, write RAM bank 2
|
|
ROMIN_RO @ $C082 ;RW read ROM, no write
|
|
LCBANK2 @ $C083 ;RWx2 read/write RAM bank 2
|
|
; C084-C087 repeats
|
|
; $C088 ;RW read RAM bank 1, write off
|
|
; $C089 ;RW read ROM, write RAM bank 1
|
|
; $C08A ;RW read ROM, no write
|
|
LCBANK1 @ $C08B ;RWx2 read/write RAM bank 1
|
|
; C08C-C08F repeats
|
|
|
|
CLRROM @ $CFFF ;disable slot C8 ROM
|
|
|
|
|
|
; Not strictly I/O locations, but they're in the neighborhood.
|
|
ROM_AUXMOVE @ $C311
|
|
ROM_XFER @ $C314
|
|
|
|
|
|
;
|
|
; I/O scratchpad RAM addresses
|
|
;
|
|
; Each slot has 8 bytes of storage available in the "screen holes" in
|
|
; text page 1. See Apple II Reference Manual table page 83,
|
|
; "Peripheral Slot Scratchpad RAM", and
|
|
; https://retrocomputing.stackexchange.com/a/2541/56
|
|
;
|
|
; Slot number:
|
|
; * 1 2 3 4 5 6 7
|
|
; $0478 $0479 $047A $047B $047C $047D $047E $047F
|
|
; $04F8 $04F9 $04FA $04FB $04FC $04FD $04FE $04FF
|
|
; $0578 $0579 $057A $057B $057C $057D $057E $057F
|
|
; $05F8 $05F9 $05FA $05FB $05FC $05FD $0SFE $05FF
|
|
; $0678 $0679 $067A $067B $067C $067D $067E $067F
|
|
; $06F8 $06F9 $06FA $06FB $06FC $06FD $06FE $06FF
|
|
; $0778 $0779 $077A $077B $077C $077D $077E $077F
|
|
; $07F8 $07F9 $07FA $07FB $07FC $07FD $07FE $07FF
|
|
;
|
|
; The slot 0 holes are shared among peripheral cards and the operating
|
|
; system, e.g. DOS puts the slot number of the peripheral card from
|
|
; which it was booted into $5F8.
|
|
;
|
|
SCRNHOLE0 @ $0478 8 ;text page 1 screen holes
|
|
SCRNHOLE1 @ $04F8 8 ;text page 1 screen holes
|
|
SCRNHOLE2 @ $0578 8 ;text page 1 screen holes
|
|
SCRNHOLE3 @ $05F8 8 ;text page 1 screen holes
|
|
SCRNHOLE4 @ $0678 8 ;text page 1 screen holes
|
|
SCRNHOLE5 @ $06F8 8 ;text page 1 screen holes
|
|
SCRNHOLE6 @ $0778 8 ;text page 1 screen holes
|
|
SCRNHOLE7 @ $07F8 8 ;text page 1 screen holes
|
|
|
|
ACTV_PERIP_SLOT @ $07F8 ;slot num ($Cn) of active peripheral card
|