Merge pull request #2734 from mrdudz/mega65c
C65 and Mega65 initial C support
This commit is contained in:
239
asminc/c65.inc
Normal file
239
asminc/c65.inc
Normal file
@@ -0,0 +1,239 @@
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Zero page, Commodore stuff
|
||||
|
||||
TXTPTR := $3C ; Pointer into BASIC source code
|
||||
STATUS := $90 ; Kernal I/O completion status
|
||||
FNAM_LEN := $B7 ; Length of filename
|
||||
SECADR := $B9 ; Secondary address
|
||||
DEVNUM := $BA ; Device number
|
||||
FNAM := $BB ; Address of filename
|
||||
FNAM_BANK := $BE ; Bank for filename
|
||||
KEY_COUNT := $D0 ; Number of keys in input buffer
|
||||
FKEY_COUNT := $D1 ; Characters for function key
|
||||
MODE := $D7 ; 40-/80-column mode (bit 7: 80 columns)
|
||||
GRAPHM := $D8 ; Graphics mode flags (bits 5-7)
|
||||
CHARDIS := $D9 ; Bit 2 shadow for location $01
|
||||
CURS_X := $EC ; Cursor column
|
||||
CURS_Y := $EB ; Cursor row
|
||||
SCREEN_PTR := $E0 ; Pointer to current char in text screen
|
||||
CRAM_PTR := $E2 ; Pointer to current char in color RAM
|
||||
CHARCOLOR := $F1
|
||||
RVS := $F3 ; Reverse output flag
|
||||
SCROLL := $F8 ; Disable scrolling flag
|
||||
|
||||
BASIC_BUF := $0200 ; Location of command-line
|
||||
BASIC_BUF_LEN = 161 ; Maximum length of command-line
|
||||
|
||||
FKEY_LEN := $1000 ; Function key lengths
|
||||
FKEY_TEXT := $100A ; Function key texts
|
||||
|
||||
PALFLAG := $1103 ; $FF=PAL, $00=NTSC
|
||||
INIT_STATUS := $1104 ; Flags: Reset/Restore initiation status
|
||||
TIME := $110C ; 60HZ clock
|
||||
|
||||
KBDREPEAT := $111a
|
||||
KBDREPEATRATE := $111b
|
||||
KBDREPEATDELAY := $111c
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Vectors
|
||||
|
||||
IRQVec := $0314
|
||||
BRKVec := $0316
|
||||
NMIVec := $0318
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: VIC
|
||||
|
||||
VIC := $D000
|
||||
VIC_SPR0_X := $D000
|
||||
VIC_SPR0_Y := $D001
|
||||
VIC_SPR1_X := $D002
|
||||
VIC_SPR1_Y := $D003
|
||||
VIC_SPR2_X := $D004
|
||||
VIC_SPR2_Y := $D005
|
||||
VIC_SPR3_X := $D006
|
||||
VIC_SPR3_Y := $D007
|
||||
VIC_SPR4_X := $D008
|
||||
VIC_SPR4_Y := $D009
|
||||
VIC_SPR5_X := $D00A
|
||||
VIC_SPR5_Y := $D00B
|
||||
VIC_SPR6_X := $D00C
|
||||
VIC_SPR6_Y := $D00D
|
||||
VIC_SPR7_X := $D00E
|
||||
VIC_SPR7_Y := $D00F
|
||||
VIC_SPR_HI_X := $D010
|
||||
VIC_SPR_ENA := $D015
|
||||
VIC_SPR_EXP_Y := $D017
|
||||
VIC_SPR_EXP_X := $D01D
|
||||
VIC_SPR_MCOLOR := $D01C
|
||||
VIC_SPR_BG_PRIO := $D01B
|
||||
VIC_SPR_COLL := $D01E
|
||||
VIC_SPR_BG_COLL := $D01F
|
||||
|
||||
VIC_SPR_MCOLOR0 := $D025
|
||||
VIC_SPR_MCOLOR1 := $D026
|
||||
|
||||
VIC_SPR0_COLOR := $D027
|
||||
VIC_SPR1_COLOR := $D028
|
||||
VIC_SPR2_COLOR := $D029
|
||||
VIC_SPR3_COLOR := $D02A
|
||||
VIC_SPR4_COLOR := $D02B
|
||||
VIC_SPR5_COLOR := $D02C
|
||||
VIC_SPR6_COLOR := $D02D
|
||||
VIC_SPR7_COLOR := $D02E
|
||||
|
||||
VIC_CTRL1 := $D011
|
||||
VIC_CTRL2 := $D016
|
||||
|
||||
VIC_HLINE := $D012
|
||||
|
||||
VIC_LPEN_X := $D013
|
||||
VIC_LPEN_Y := $D014
|
||||
|
||||
VIC_VIDEO_ADR := $D018
|
||||
|
||||
VIC_IRR := $D019 ; Interrupt request register
|
||||
VIC_IMR := $D01A ; Interrupt mask register
|
||||
|
||||
VIC_BORDERCOLOR := $D020
|
||||
VIC_BG_COLOR0 := $D021
|
||||
VIC_BG_COLOR1 := $D022
|
||||
VIC_BG_COLOR2 := $D023
|
||||
VIC_BG_COLOR3 := $D024
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: FDC
|
||||
|
||||
FDC := $D080
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: SID
|
||||
|
||||
SID1 := $D400
|
||||
SID1_S1Lo := $D400
|
||||
SID1_S1Hi := $D401
|
||||
SID1_PB1Lo := $D402
|
||||
SID1_PB1Hi := $D403
|
||||
SID1_Ctl1 := $D404
|
||||
SID1_AD1 := $D405
|
||||
SID1_SUR1 := $D406
|
||||
|
||||
SID1_S2Lo := $D407
|
||||
SID1_S2Hi := $D408
|
||||
SID1_PB2Lo := $D409
|
||||
SID1_PB2Hi := $D40A
|
||||
SID1_Ctl2 := $D40B
|
||||
SID1_AD2 := $D40C
|
||||
SID1_SUR2 := $D40D
|
||||
|
||||
SID1_S3Lo := $D40E
|
||||
SID1_S3Hi := $D40F
|
||||
SID1_PB3Lo := $D410
|
||||
SID1_PB3Hi := $D411
|
||||
SID1_Ctl3 := $D412
|
||||
SID1_AD3 := $D413
|
||||
SID1_SUR3 := $D414
|
||||
|
||||
SID1_FltLo := $D415
|
||||
SID1_FltHi := $D416
|
||||
SID1_FltCtl := $D417
|
||||
SID1_Amp := $D418
|
||||
SID1_ADConv1 := $D419
|
||||
SID1_ADConv2 := $D41A
|
||||
SID1_Noise := $D41B
|
||||
SID1_Read3 := $D41C
|
||||
|
||||
SID2 := $D420
|
||||
SID2_S1Lo := $D420
|
||||
SID2_S1Hi := $D421
|
||||
SID2_PB1Lo := $D422
|
||||
SID2_PB1Hi := $D423
|
||||
SID2_Ctl1 := $D424
|
||||
SID2_AD1 := $D425
|
||||
SID2_SUR1 := $D426
|
||||
|
||||
SID2_S2Lo := $D427
|
||||
SID2_S2Hi := $D428
|
||||
SID2_PB2Lo := $D429
|
||||
SID2_PB2Hi := $D42A
|
||||
SID2_Ctl2 := $D42B
|
||||
SID2_AD2 := $D42C
|
||||
SID2_SUR2 := $D42D
|
||||
|
||||
SID2_S3Lo := $D42E
|
||||
SID2_S3Hi := $D42F
|
||||
SID2_PB3Lo := $D430
|
||||
SID2_PB3Hi := $D431
|
||||
SID2_Ctl3 := $D432
|
||||
SID2_AD3 := $D433
|
||||
SID2_SUR3 := $D434
|
||||
|
||||
SID2_FltLo := $D435
|
||||
SID2_FltHi := $D436
|
||||
SID2_FltCtl := $D437
|
||||
SID2_Amp := $D438
|
||||
SID2_ADConv1 := $D439
|
||||
SID2_ADConv2 := $D43A
|
||||
SID2_Noise := $D43B
|
||||
SID2_Read3 := $D43C
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: Complex Interface Adapters
|
||||
|
||||
CIA1 := $DC00
|
||||
CIA1_PRA := $DC00 ; Port A
|
||||
CIA1_PRB := $DC01 ; Port B
|
||||
CIA1_DDRA := $DC02 ; Data direction register for port A
|
||||
CIA1_DDRB := $DC03 ; Data direction register for port B
|
||||
CIA1_TA := $DC04 ; 16-bit timer A
|
||||
CIA1_TB := $DC06 ; 16-bit timer B
|
||||
CIA1_TOD10 := $DC08 ; Time-of-day tenths of a second
|
||||
CIA1_TODSEC := $DC09 ; Time-of-day seconds
|
||||
CIA1_TODMIN := $DC0A ; Time-of-day minutes
|
||||
CIA1_TODHR := $DC0B ; Time-of-day hours
|
||||
CIA1_SDR := $DC0C ; Serial data register
|
||||
CIA1_ICR := $DC0D ; Interrupt control register
|
||||
CIA1_CRA := $DC0E ; Control register for timer A
|
||||
CIA1_CRB := $DC0F ; Control register for timer B
|
||||
|
||||
CIA2 := $DD00
|
||||
CIA2_PRA := $DD00
|
||||
CIA2_PRB := $DD01
|
||||
CIA2_DDRA := $DD02
|
||||
CIA2_DDRB := $DD03
|
||||
CIA2_TA := $DD04
|
||||
CIA2_TB := $DD06
|
||||
CIA2_TOD10 := $DD08
|
||||
CIA2_TODSEC := $DD09
|
||||
CIA2_TODMIN := $DD0A
|
||||
CIA2_TODHR := $DD0B
|
||||
CIA2_SDR := $DD0C
|
||||
CIA2_ICR := $DD0D
|
||||
CIA2_CRA := $DD0E
|
||||
CIA2_CRB := $DD0F
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: DMA
|
||||
|
||||
DMA := $D700
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Processor Port at $01
|
||||
|
||||
LORAM = $01 ; Enable the basic rom
|
||||
HIRAM = $02 ; Enable the kernal rom
|
||||
IOEN = $04 ; Enable I/O
|
||||
CASSDATA = $08 ; Cassette data
|
||||
CASSPLAY = $10 ; Cassette: Play
|
||||
CASSMOT = $20 ; Cassette motor on
|
||||
TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode
|
||||
|
||||
RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF
|
||||
|
||||
; temporary, to get conio working
|
||||
XSIZE = 80
|
||||
YSIZE = 50
|
||||
@@ -63,6 +63,43 @@
|
||||
MOUSE_GET := $FF6B
|
||||
.endif
|
||||
|
||||
.if .def (__MEGA65__)
|
||||
; extended C65 jump table
|
||||
|
||||
; memory before $ff3b is all $ff in mega65 ROM?
|
||||
; VERSIONQ := $FF2F
|
||||
; RESET_RUN := $FF32
|
||||
; CURSOR := $FF35
|
||||
|
||||
SAVEFL := $FF3B
|
||||
GETIO := $FF41
|
||||
GETLFS := $FF44
|
||||
KEYLOCKS := $FF47
|
||||
ADDKEY := $FF4A
|
||||
.endif
|
||||
|
||||
.if .def(__C65__) || .def (__MEGA65__)
|
||||
CURSOR := $E030 ; in editor ROM
|
||||
|
||||
SPIN_SPOUT := $FF4D
|
||||
CLSALL := $FF50
|
||||
C64MODE := $FF53
|
||||
MonitorCall := $FF56
|
||||
BOOT_SYS := $FF59
|
||||
PHOENIX := $FF5C
|
||||
LKUPLA := $FF5F
|
||||
LKUPSA := $FF62
|
||||
SWAPPER := $FF65
|
||||
PFKEY := $FF68
|
||||
SETBNK := $FF6B
|
||||
JSRFAR := $FF6E
|
||||
JMPFAR := $FF71
|
||||
LDA_FAR := $FF74
|
||||
STA_FAR := $FF77
|
||||
CMP_FAR := $FF7A
|
||||
PRIMM := $FF7D
|
||||
.endif
|
||||
|
||||
.if .def(__C128__)
|
||||
; C128 extended jump table
|
||||
C64MODE := $FF4D
|
||||
@@ -83,7 +120,7 @@
|
||||
PRIMM := $FF7D
|
||||
.endif
|
||||
|
||||
.if .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__)
|
||||
.if .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) || .def(__C65__) || .def (__MEGA65__)
|
||||
CINT := $FF81
|
||||
IOINIT := $FF84
|
||||
RAMTAS := $FF87
|
||||
@@ -96,7 +133,7 @@
|
||||
CINT := $FF7E
|
||||
.endif
|
||||
|
||||
.if .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__)
|
||||
.if .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) || .def(__C65__) || .def (__MEGA65__)
|
||||
RESTOR := $FF8A
|
||||
VECTOR := $FF8D
|
||||
.elseif .def(__CBM510__) || .def(__CBM610__)
|
||||
@@ -112,6 +149,17 @@
|
||||
MEMBOT := $FF9C
|
||||
SCNKEY := $FF9F
|
||||
SETTMO := $FFA2
|
||||
.elseif .def(__C65__) || .def (__MEGA65__)
|
||||
SETMSG := $FF90
|
||||
SECOND := $FF93
|
||||
TKSA := $FF96
|
||||
MEMTOP := $FF99
|
||||
MEMBOT := $FF9C
|
||||
SCNKEY := $FF9F
|
||||
MONEXIT := $FFA2
|
||||
.endif
|
||||
|
||||
.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) || .def(__C65__) || .def(__MEGA65__)
|
||||
ACPTR := $FFA5
|
||||
CIOUT := $FFA8
|
||||
UNTLK := $FFAB
|
||||
@@ -136,7 +184,7 @@ CHRIN := $FFCF
|
||||
BSOUT := $FFD2
|
||||
CHROUT := $FFD2
|
||||
|
||||
.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__)
|
||||
.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) || .def(__C65__) || .def(__MEGA65__)
|
||||
LOAD := $FFD5
|
||||
SAVE := $FFD8
|
||||
SETTIM := $FFDB
|
||||
@@ -147,9 +195,14 @@ CHROUT := $FFD2
|
||||
STOP := $FFE1
|
||||
GETIN := $FFE4
|
||||
CLALL := $FFE7
|
||||
UDTIM := $FFEA
|
||||
|
||||
.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__)
|
||||
.if .def(__C65__) || .def(__MEGA65__)
|
||||
ScanStopKey := $FFEA
|
||||
.else
|
||||
UDTIM := $FFEA
|
||||
.endif
|
||||
|
||||
.if .def(__CBM510__) || .def(__CBM610__) || .def(__VIC20__) || .def(__C64__) || .def(__C128__) || .def(__C16__) || .def(__CX16__) || .def(__C65__) || .def(__MEGA65__)
|
||||
SCREEN := $FFED
|
||||
PLOT := $FFF0
|
||||
IOBASE := $FFF3
|
||||
@@ -173,10 +226,10 @@ UDTIM := $FFEA
|
||||
KBDREAD := $E5CF
|
||||
UPDCRAMPTR := $EAB2
|
||||
.elseif .def(__C64__)
|
||||
CLRSCR := $E544
|
||||
KBDREAD := $E5B4
|
||||
CLRSCR := $E544 ; Clear the screen
|
||||
KBDREAD := $E5B4 ; Get Character From Keyboard Buffer
|
||||
NMIEXIT := $FEBC
|
||||
UPDCRAMPTR := $EA24
|
||||
UPDCRAMPTR := $EA24 ; Update color ram pointer
|
||||
.elseif .def(__C128__)
|
||||
CLRSCR := $C142
|
||||
KBDREAD := $C006
|
||||
@@ -189,4 +242,7 @@ UDTIM := $FFEA
|
||||
.elseif .def(__C16__)
|
||||
CLRSCR := $D88B
|
||||
KBDREAD := $D8C1
|
||||
.elseif .def(__C65__) || .def(__MEGA65__)
|
||||
; CLRSCR := $E0EC ; ???
|
||||
KBDREAD := $E006
|
||||
.endif
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
; CPU bitmask constants
|
||||
; CPU bitmask constants (make sure this matches src/common/cpu.h)
|
||||
|
||||
CPU_ISET_NONE = $0001
|
||||
CPU_ISET_6502 = $0002
|
||||
CPU_ISET_6502X = $0004
|
||||
@@ -13,17 +14,20 @@ CPU_ISET_4510 = $0400
|
||||
CPU_ISET_45GS02 = $0800
|
||||
|
||||
; CPU capabilities
|
||||
; make sure to only combine the instruction sets that are 100% compatible
|
||||
CPU_NONE = CPU_ISET_NONE
|
||||
CPU_6502 = CPU_ISET_6502
|
||||
CPU_6502X = CPU_ISET_6502|CPU_ISET_6502X
|
||||
CPU_6502DTV = CPU_ISET_6502|CPU_ISET_6502DTV
|
||||
CPU_65SC02 = CPU_ISET_6502|CPU_ISET_65SC02
|
||||
CPU_65C02 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02
|
||||
CPU_65816 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65816
|
||||
CPU_6502X = CPU_ISET_6502X | CPU_ISET_6502
|
||||
CPU_6502DTV = CPU_ISET_6502DTV | CPU_ISET_6502
|
||||
CPU_65SC02 = CPU_ISET_65SC02 | CPU_ISET_6502
|
||||
CPU_65C02 = CPU_ISET_65C02 | CPU_ISET_6502 | CPU_ISET_65SC02
|
||||
CPU_65816 = CPU_ISET_65816 | CPU_ISET_6502 | CPU_ISET_65SC02
|
||||
CPU_SWEET16 = CPU_ISET_SWEET16
|
||||
; FIXME: CPU_ISET_65SC02 does not apply to the following, because the zp-indirect
|
||||
; addressing was replaced with zp-indirect,z-indexed in 652SCE02
|
||||
; NOTE: HUC6280 removes "wai" ($cb) and "stp" ($db) from the 65C02 instruction set
|
||||
CPU_HUC6280 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02|CPU_ISET_HUC6280
|
||||
; NOTE: 45100 replaces "wai" ($cb) and "stp" ($db) of the 65C02 instruction set
|
||||
CPU_4510 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02|CPU_ISET_4510
|
||||
CPU_45GS02 = CPU_ISET_6502|CPU_ISET_65SC02|CPU_ISET_65C02|CPU_ISET_4510|CPU_ISET_45GS02
|
||||
CPU_M740 = CPU_ISET_6502|CPU_ISET_M740
|
||||
CPU_HUC6280 = CPU_ISET_HUC6280 | CPU_ISET_6502 | CPU_ISET_65C02
|
||||
; NOTE: 4510 replaces "wai" ($cb) and "stp" ($db) of the 65C02 instruction set
|
||||
CPU_4510 = CPU_ISET_4510 | CPU_ISET_6502 | CPU_ISET_65C02
|
||||
CPU_45GS02 = CPU_ISET_45GS02 | CPU_ISET_6502 | CPU_ISET_65C02 | CPU_ISET_4510
|
||||
CPU_M740 = CPU_ISET_M740 | CPU_ISET_6502
|
||||
|
||||
239
asminc/mega65.inc
Normal file
239
asminc/mega65.inc
Normal file
@@ -0,0 +1,239 @@
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Zero page, Commodore stuff
|
||||
|
||||
TXTPTR := $3C ; Pointer into BASIC source code
|
||||
STATUS := $90 ; Kernal I/O completion status
|
||||
FNAM_LEN := $B7 ; Length of filename
|
||||
SECADR := $B9 ; Secondary address
|
||||
DEVNUM := $BA ; Device number
|
||||
FNAM := $BB ; Address of filename
|
||||
FNAM_BANK := $BE ; Bank for filename
|
||||
KEY_COUNT := $D0 ; Number of keys in input buffer
|
||||
FKEY_COUNT := $D1 ; Characters for function key
|
||||
MODE := $D7 ; 40-/80-column mode (bit 7: 80 columns)
|
||||
GRAPHM := $D8 ; Graphics mode flags (bits 5-7)
|
||||
CHARDIS := $D9 ; Bit 2 shadow for location $01
|
||||
CURS_X := $EC ; Cursor column
|
||||
CURS_Y := $EB ; Cursor row
|
||||
SCREEN_PTR := $E0 ; Pointer to current char in text screen
|
||||
CRAM_PTR := $E2 ; Pointer to current char in color RAM
|
||||
CHARCOLOR := $F1
|
||||
RVS := $F3 ; Reverse output flag
|
||||
SCROLL := $F8 ; Disable scrolling flag
|
||||
|
||||
BASIC_BUF := $0200 ; Location of command-line
|
||||
BASIC_BUF_LEN = 161 ; Maximum length of command-line
|
||||
|
||||
FKEY_LEN := $1000 ; Function key lengths
|
||||
FKEY_TEXT := $100A ; Function key texts
|
||||
|
||||
PALFLAG := $1103 ; $FF=PAL, $00=NTSC
|
||||
INIT_STATUS := $1104 ; Flags: Reset/Restore initiation status
|
||||
TIME := $110C ; 60HZ clock
|
||||
|
||||
KBDREPEAT := $111a
|
||||
KBDREPEATRATE := $111b
|
||||
KBDREPEATDELAY := $111c
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Vectors
|
||||
|
||||
IRQVec := $0314
|
||||
BRKVec := $0316
|
||||
NMIVec := $0318
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: VIC
|
||||
|
||||
VIC := $D000
|
||||
VIC_SPR0_X := $D000
|
||||
VIC_SPR0_Y := $D001
|
||||
VIC_SPR1_X := $D002
|
||||
VIC_SPR1_Y := $D003
|
||||
VIC_SPR2_X := $D004
|
||||
VIC_SPR2_Y := $D005
|
||||
VIC_SPR3_X := $D006
|
||||
VIC_SPR3_Y := $D007
|
||||
VIC_SPR4_X := $D008
|
||||
VIC_SPR4_Y := $D009
|
||||
VIC_SPR5_X := $D00A
|
||||
VIC_SPR5_Y := $D00B
|
||||
VIC_SPR6_X := $D00C
|
||||
VIC_SPR6_Y := $D00D
|
||||
VIC_SPR7_X := $D00E
|
||||
VIC_SPR7_Y := $D00F
|
||||
VIC_SPR_HI_X := $D010
|
||||
VIC_SPR_ENA := $D015
|
||||
VIC_SPR_EXP_Y := $D017
|
||||
VIC_SPR_EXP_X := $D01D
|
||||
VIC_SPR_MCOLOR := $D01C
|
||||
VIC_SPR_BG_PRIO := $D01B
|
||||
VIC_SPR_COLL := $D01E
|
||||
VIC_SPR_BG_COLL := $D01F
|
||||
|
||||
VIC_SPR_MCOLOR0 := $D025
|
||||
VIC_SPR_MCOLOR1 := $D026
|
||||
|
||||
VIC_SPR0_COLOR := $D027
|
||||
VIC_SPR1_COLOR := $D028
|
||||
VIC_SPR2_COLOR := $D029
|
||||
VIC_SPR3_COLOR := $D02A
|
||||
VIC_SPR4_COLOR := $D02B
|
||||
VIC_SPR5_COLOR := $D02C
|
||||
VIC_SPR6_COLOR := $D02D
|
||||
VIC_SPR7_COLOR := $D02E
|
||||
|
||||
VIC_CTRL1 := $D011
|
||||
VIC_CTRL2 := $D016
|
||||
|
||||
VIC_HLINE := $D012
|
||||
|
||||
VIC_LPEN_X := $D013
|
||||
VIC_LPEN_Y := $D014
|
||||
|
||||
VIC_VIDEO_ADR := $D018
|
||||
|
||||
VIC_IRR := $D019 ; Interrupt request register
|
||||
VIC_IMR := $D01A ; Interrupt mask register
|
||||
|
||||
VIC_BORDERCOLOR := $D020
|
||||
VIC_BG_COLOR0 := $D021
|
||||
VIC_BG_COLOR1 := $D022
|
||||
VIC_BG_COLOR2 := $D023
|
||||
VIC_BG_COLOR3 := $D024
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: FDC
|
||||
|
||||
FDC := $D080
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: SID
|
||||
|
||||
SID0 := $D400
|
||||
SID0_S1Lo := $D400
|
||||
SID0_S1Hi := $D401
|
||||
SID0_PB1Lo := $D402
|
||||
SID0_PB1Hi := $D403
|
||||
SID0_Ctl1 := $D404
|
||||
SID0_AD1 := $D405
|
||||
SID0_SUR1 := $D406
|
||||
|
||||
SID0_S2Lo := $D407
|
||||
SID0_S2Hi := $D408
|
||||
SID0_PB2Lo := $D409
|
||||
SID0_PB2Hi := $D40A
|
||||
SID0_Ctl2 := $D40B
|
||||
SID0_AD2 := $D40C
|
||||
SID0_SUR2 := $D40D
|
||||
|
||||
SID0_S3Lo := $D40E
|
||||
SID0_S3Hi := $D40F
|
||||
SID0_PB3Lo := $D410
|
||||
SID0_PB3Hi := $D411
|
||||
SID0_Ctl3 := $D412
|
||||
SID0_AD3 := $D413
|
||||
SID0_SUR3 := $D414
|
||||
|
||||
SID0_FltLo := $D415
|
||||
SID0_FltHi := $D416
|
||||
SID0_FltCtl := $D417
|
||||
SID0_Amp := $D418
|
||||
SID0_ADConv1 := $D419
|
||||
SID0_ADConv2 := $D41A
|
||||
SID0_Noise := $D41B
|
||||
SID0_Read3 := $D41C
|
||||
|
||||
SID1 := $D420
|
||||
SID1_S1Lo := $D420
|
||||
SID1_S1Hi := $D421
|
||||
SID1_PB1Lo := $D422
|
||||
SID1_PB1Hi := $D423
|
||||
SID1_Ctl1 := $D424
|
||||
SID1_AD1 := $D425
|
||||
SID1_SUR1 := $D426
|
||||
|
||||
SID1_S2Lo := $D427
|
||||
SID1_S2Hi := $D428
|
||||
SID1_PB2Lo := $D429
|
||||
SID1_PB2Hi := $D42A
|
||||
SID1_Ctl2 := $D42B
|
||||
SID1_AD2 := $D42C
|
||||
SID1_SUR2 := $D42D
|
||||
|
||||
SID1_S3Lo := $D42E
|
||||
SID1_S3Hi := $D42F
|
||||
SID1_PB3Lo := $D430
|
||||
SID1_PB3Hi := $D431
|
||||
SID1_Ctl3 := $D432
|
||||
SID1_AD3 := $D433
|
||||
SID1_SUR3 := $D434
|
||||
|
||||
SID1_FltLo := $D435
|
||||
SID1_FltHi := $D436
|
||||
SID1_FltCtl := $D437
|
||||
SID1_Amp := $D438
|
||||
SID1_ADConv1 := $D439
|
||||
SID1_ADConv2 := $D43A
|
||||
SID1_Noise := $D43B
|
||||
SID1_Read3 := $D43C
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: Complex Interface Adapters
|
||||
|
||||
CIA1 := $DC00
|
||||
CIA1_PRA := $DC00 ; Port A
|
||||
CIA1_PRB := $DC01 ; Port B
|
||||
CIA1_DDRA := $DC02 ; Data direction register for port A
|
||||
CIA1_DDRB := $DC03 ; Data direction register for port B
|
||||
CIA1_TA := $DC04 ; 16-bit timer A
|
||||
CIA1_TB := $DC06 ; 16-bit timer B
|
||||
CIA1_TOD10 := $DC08 ; Time-of-day tenths of a second
|
||||
CIA1_TODSEC := $DC09 ; Time-of-day seconds
|
||||
CIA1_TODMIN := $DC0A ; Time-of-day minutes
|
||||
CIA1_TODHR := $DC0B ; Time-of-day hours
|
||||
CIA1_SDR := $DC0C ; Serial data register
|
||||
CIA1_ICR := $DC0D ; Interrupt control register
|
||||
CIA1_CRA := $DC0E ; Control register for timer A
|
||||
CIA1_CRB := $DC0F ; Control register for timer B
|
||||
|
||||
CIA2 := $DD00
|
||||
CIA2_PRA := $DD00
|
||||
CIA2_PRB := $DD01
|
||||
CIA2_DDRA := $DD02
|
||||
CIA2_DDRB := $DD03
|
||||
CIA2_TA := $DD04
|
||||
CIA2_TB := $DD06
|
||||
CIA2_TOD10 := $DD08
|
||||
CIA2_TODSEC := $DD09
|
||||
CIA2_TODMIN := $DD0A
|
||||
CIA2_TODHR := $DD0B
|
||||
CIA2_SDR := $DD0C
|
||||
CIA2_ICR := $DD0D
|
||||
CIA2_CRA := $DD0E
|
||||
CIA2_CRB := $DD0F
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; I/O: DMA
|
||||
|
||||
DMA := $D700
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Processor Port at $01
|
||||
|
||||
LORAM = $01 ; Enable the basic rom
|
||||
HIRAM = $02 ; Enable the kernal rom
|
||||
IOEN = $04 ; Enable I/O
|
||||
CASSDATA = $08 ; Cassette data
|
||||
CASSPLAY = $10 ; Cassette: Play
|
||||
CASSMOT = $20 ; Cassette motor on
|
||||
TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode
|
||||
|
||||
RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF
|
||||
|
||||
; temporary, to get conio working
|
||||
XSIZE = 80
|
||||
YSIZE = 50
|
||||
Reference in New Issue
Block a user