-
Notifications
You must be signed in to change notification settings - Fork 1
/
x16.inc
80 lines (62 loc) · 1.3 KB
/
x16.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
.ifndef X16_INC
X16_INC = 1
; RAM Addresses
; Zero-Page userspace
ZP_PTR_1 = $00
ZP_PTR_2 = $02
ZP_PTR_3 = $04
ZP_PTR_4 = $06
; I/O Registers
VERA_addr_low = $9F20
VERA_addr_high = $9F21
VERA_addr_bank = $9F22
VERA_data0 = $9F23
VERA_data1 = $9F24
VERA_ctrl = $9F25
VERA_irq_ctrl = $9F26
VERA_irq = $9F27
ROM_BANK = $9F60
RAM_BANK = $9F61
YM_reg = $9FE0
YM_data = $9FE1
; Emulator Registers
GIF_ctrl = $9FB5
; Banked Addresses
RAM_WIN = $A000
RAM_WIN_SIZE = $2000
ROM_WIN = $C000
; Kernal Subroutines
SETLFS := $FFBA
SETNAM := $FFBD
LOAD := $FFD5
; VRAM Addresses
VRAM_composer = $F0000
VRAM_hscale = VRAM_composer+1
VRAM_vscale = VRAM_composer+2
VRAM_palette = $F1000
VRAM_layer0 = $F2000
VRAM_layer1 = $F3000
VRAM_sprreg = $F4000
VRAM_sprattr = $F5000
VRAM_audio = $F6000
VRAM_spi = $F7000
VRAM_uart = $F8000
VROM_petscii = $1F000
; IRQs
IRQVec := $0314
BRKVec := $0316
NMIVec := $0318
; Macros
.macro VERA_SET_ADDR addr, stride
.ifnblank stride
lda #((^addr) | (stride << 4))
.else
lda #(^addr) | $10
.endif
sta VERA_addr_bank
lda #(>addr)
sta VERA_addr_high
lda #(<addr)
sta VERA_addr_low
.endmacro
.endif