mirror of
https://github.com/KarolS/millfork.git
synced 2026-04-25 19:17:54 +00:00
Preliminary support for volatile variables
This commit is contained in:
+9
-9
@@ -5,21 +5,21 @@
|
||||
#endif
|
||||
|
||||
// CIA1
|
||||
byte cia1_pra @$DC00
|
||||
byte cia1_prb @$DC01
|
||||
volatile byte cia1_pra @$DC00
|
||||
volatile byte cia1_prb @$DC01
|
||||
byte cia1_ddra @$DC02
|
||||
byte cia1_ddrb @$DC03
|
||||
byte cia2_pra @$DD00
|
||||
byte cia2_prb @$DD01
|
||||
volatile byte cia2_pra @$DD00
|
||||
volatile byte cia2_prb @$DD01
|
||||
byte cia2_ddra @$DD02
|
||||
byte cia2_ddrb @$DD03
|
||||
|
||||
macro asm void cia_disable_irq() {
|
||||
LDA #$7f
|
||||
LDA $dc0d
|
||||
LDA $dd0d
|
||||
LDA $dc0d
|
||||
LDA $dd0d
|
||||
? LDA #$7f
|
||||
! LDA $dc0d
|
||||
! LDA $dd0d
|
||||
! LDA $dc0d
|
||||
! LDA $dd0d
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -24,5 +24,5 @@ byte sid_v3_cr @$D412
|
||||
byte sid_v3_ad @$D413
|
||||
byte sid_v3_sr @$D414
|
||||
|
||||
byte sid_paddle_x @$D419
|
||||
byte sid_paddle_y @$D41A
|
||||
volatile byte sid_paddle_x @$D419
|
||||
volatile byte sid_paddle_y @$D41A
|
||||
|
||||
+3
-3
@@ -24,15 +24,15 @@ byte vic_spr7_x @$D00E
|
||||
byte vic_spr7_y @$D00F
|
||||
byte vic_spr_hi_x @$D010
|
||||
byte vic_cr1 @$D011
|
||||
byte vic_raster @$D012
|
||||
volatile byte vic_raster @$D012
|
||||
byte vic_lp_x @$D013
|
||||
byte vic_lp_y @$D014
|
||||
byte vic_spr_ena @$D015
|
||||
byte vic_cr2 @$D016
|
||||
byte vic_spr_exp_y @$D017
|
||||
byte vic_mem @$D018
|
||||
byte vic_irq @$D019
|
||||
byte vic_irq_ena @$D01A
|
||||
volatile byte vic_irq @$D019
|
||||
volatile byte vic_irq_ena @$D01A
|
||||
byte vic_spr_dp @$D01B
|
||||
byte vic_spr_mcolor @$D01C
|
||||
byte vic_spr_exp_x @$D01D
|
||||
|
||||
+42
-42
@@ -2,58 +2,58 @@
|
||||
#warn nes_hardware module should be only used on NES/Famicom targets
|
||||
#endif
|
||||
|
||||
byte ppu_ctrl @$2000
|
||||
byte ppu_mask @$2001
|
||||
byte ppu_status @$2002
|
||||
byte oam_addr @$2003
|
||||
byte oam_data @$2004
|
||||
byte ppu_scroll @$2005
|
||||
byte ppu_addr @$2006
|
||||
byte ppu_data @$2007
|
||||
byte oam_dma @$4014
|
||||
volatile byte ppu_ctrl @$2000
|
||||
volatile byte ppu_mask @$2001
|
||||
volatile byte ppu_status @$2002
|
||||
volatile byte oam_addr @$2003
|
||||
volatile byte oam_data @$2004
|
||||
volatile byte ppu_scroll @$2005
|
||||
volatile byte ppu_addr @$2006
|
||||
volatile byte ppu_data @$2007
|
||||
volatile byte oam_dma @$4014
|
||||
|
||||
// TODO: better names
|
||||
|
||||
byte apu_pulse1_ctrl @$4000
|
||||
byte apu_pulse1_sweep @$4001
|
||||
word apu_pulse1_period @$4002
|
||||
volatile byte apu_pulse1_ctrl @$4000
|
||||
volatile byte apu_pulse1_sweep @$4001
|
||||
volatile word apu_pulse1_period @$4002
|
||||
|
||||
byte apu_pulse2_ctrl @$4004
|
||||
byte apu_pulse2_sweep @$4005
|
||||
word apu_pulse2_period @$4006
|
||||
volatile byte apu_pulse2_ctrl @$4004
|
||||
volatile byte apu_pulse2_sweep @$4005
|
||||
volatile word apu_pulse2_period @$4006
|
||||
|
||||
byte apu_triangle_unmute @$4008
|
||||
word apu_triangle_period @$400A
|
||||
volatile byte apu_triangle_unmute @$4008
|
||||
volatile word apu_triangle_period @$400A
|
||||
|
||||
byte apu_noise_ctrl @$400C
|
||||
byte apu_noise_period @$400E
|
||||
volatile byte apu_noise_ctrl @$400C
|
||||
volatile byte apu_noise_period @$400E
|
||||
|
||||
byte apu_dmc_ctrl @$4010
|
||||
byte apu_dmc_load @$4011
|
||||
byte apu_dmc_sample_addr @$4012
|
||||
byte apu_dmc_sample_length @$4013
|
||||
volatile byte apu_dmc_ctrl @$4010
|
||||
volatile byte apu_dmc_load @$4011
|
||||
volatile byte apu_dmc_sample_addr @$4012
|
||||
volatile byte apu_dmc_sample_length @$4013
|
||||
|
||||
byte apu_status @$4015
|
||||
byte apu_frame_counter @$4017
|
||||
volatile byte apu_status @$4015
|
||||
volatile byte apu_frame_counter @$4017
|
||||
|
||||
byte joypad1_ctrl @$4016
|
||||
byte joypad2_ctrl @$4017
|
||||
volatile byte joypad1_ctrl @$4016
|
||||
volatile byte joypad2_ctrl @$4017
|
||||
|
||||
inline asm byte strobe_joypad() {
|
||||
? LDA #1
|
||||
STA joypad1_ctrl
|
||||
LSR
|
||||
STA joypad1_ctrl
|
||||
! STA joypad1_ctrl
|
||||
? LSR
|
||||
! STA joypad1_ctrl
|
||||
? RTS
|
||||
}
|
||||
|
||||
inline asm byte read_joypad1() {
|
||||
LDA joypad1_ctrl
|
||||
! LDA joypad1_ctrl
|
||||
? RTS
|
||||
}
|
||||
|
||||
inline asm byte read_joypad2() {
|
||||
LDA joypad2_ctrl
|
||||
! LDA joypad2_ctrl
|
||||
? RTS
|
||||
}
|
||||
|
||||
@@ -62,29 +62,29 @@ macro asm void simulate_reset() {
|
||||
}
|
||||
|
||||
inline asm void ppu_set_addr(word ax) {
|
||||
STX ppu_addr
|
||||
STA ppu_addr
|
||||
! STX ppu_addr
|
||||
! STA ppu_addr
|
||||
?RTS
|
||||
}
|
||||
|
||||
inline asm byte read_ppu_status() {
|
||||
LDA ppu_status
|
||||
! LDA ppu_status
|
||||
? RTS
|
||||
}
|
||||
|
||||
inline asm void ppu_set_scroll(word a, word x) {
|
||||
STA ppu_scroll
|
||||
STX ppu_scroll
|
||||
?RTS
|
||||
! STA ppu_scroll
|
||||
! STX ppu_scroll
|
||||
? RTS
|
||||
}
|
||||
|
||||
inline asm void ppu_write_data(byte a) {
|
||||
STA ppu_data
|
||||
?RTS
|
||||
! STA ppu_data
|
||||
? RTS
|
||||
}
|
||||
|
||||
inline asm void ppu_oam_dma_write(byte a) {
|
||||
STA oam_dma
|
||||
?RTS
|
||||
! STA oam_dma
|
||||
? RTS
|
||||
}
|
||||
|
||||
|
||||
@@ -9,11 +9,11 @@ word reset_routine_addr @$FFFC
|
||||
word irq_routine_addr @$FFFE
|
||||
|
||||
macro asm void poke(word const addr, byte a) {
|
||||
STA addr
|
||||
! STA addr
|
||||
}
|
||||
|
||||
macro asm byte peek(word const addr) {
|
||||
LDA addr
|
||||
! LDA addr
|
||||
}
|
||||
|
||||
macro asm void disable_irq() {
|
||||
@@ -33,7 +33,7 @@ asm byte hi_nibble_to_hex(byte a) {
|
||||
}
|
||||
|
||||
asm byte lo_nibble_to_hex(byte a) {
|
||||
AND #$F
|
||||
! AND #$F
|
||||
CLC
|
||||
ADC #$30
|
||||
CMP #$3A
|
||||
@@ -44,7 +44,7 @@ _lo_nibble_to_hex_lbl:
|
||||
}
|
||||
|
||||
macro asm void panic() {
|
||||
JSR _panic
|
||||
? JSR _panic
|
||||
}
|
||||
|
||||
array __constant8 = [8]
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
import i80_math
|
||||
|
||||
macro asm void poke(word const addr, byte a) {
|
||||
LD (addr), A
|
||||
! LD (addr), A
|
||||
}
|
||||
|
||||
macro asm byte peek(word const addr) {
|
||||
LD A, (addr)
|
||||
! LD A, (addr)
|
||||
}
|
||||
|
||||
macro asm void disable_irq() {
|
||||
@@ -51,5 +51,5 @@ _lo_nibble_to_hex_lbl:
|
||||
}
|
||||
|
||||
macro asm void panic() {
|
||||
CALL _panic
|
||||
? CALL _panic
|
||||
}
|
||||
|
||||
+86
-86
@@ -3,75 +3,75 @@
|
||||
#warn vcs_hardware module should be only used on Atari 2600-compatible targets
|
||||
#endif
|
||||
|
||||
byte VSYNC @$00
|
||||
byte VBLANK @$01
|
||||
byte WSYNC @$02
|
||||
byte RSYNC @$03
|
||||
byte NUSIZ0 @$04
|
||||
byte NUSIZ1 @$05
|
||||
byte COLUP0 @$06
|
||||
byte COLUP1 @$07
|
||||
byte COLUPF @$08
|
||||
byte COLUBK @$09
|
||||
byte CTRLPF @$0A
|
||||
byte REFP0 @$0B
|
||||
byte REFP1 @$0C
|
||||
byte PF0 @$0D
|
||||
byte PF1 @$0E
|
||||
byte PF2 @$0F
|
||||
byte RESP0 @$10
|
||||
byte RESP1 @$11
|
||||
byte RESM0 @$12
|
||||
byte RESM1 @$13
|
||||
byte RESBL @$14
|
||||
byte AUDC0 @$15
|
||||
byte AUDC1 @$16
|
||||
byte AUDF0 @$17
|
||||
byte AUDF1 @$18
|
||||
byte AUDV0 @$19
|
||||
byte AUDV1 @$1A
|
||||
byte GRP0 @$1B
|
||||
byte GRP1 @$1C
|
||||
byte ENAM0 @$1D
|
||||
byte ENAM1 @$1E
|
||||
byte ENABL @$1F
|
||||
byte HMP0 @$20
|
||||
byte HMP1 @$21
|
||||
byte HMM0 @$22
|
||||
byte HMM1 @$23
|
||||
byte HMBL @$24
|
||||
byte VDELP0 @$25
|
||||
byte VDELP1 @$26
|
||||
byte VDELBL @$27
|
||||
byte RESMP0 @$28
|
||||
byte RESMP1 @$29
|
||||
byte HMOVE @$2A
|
||||
byte HMCLR @$2B
|
||||
byte CXCLR @$2C
|
||||
byte CXM0P @$30
|
||||
byte CXM1P @$31
|
||||
byte CXP0FB @$32
|
||||
byte CXP1FB @$33
|
||||
byte CXM0FB @$34
|
||||
byte CXM1FB @$35
|
||||
byte CXBLPF @$36
|
||||
byte CXPPMM @$37
|
||||
byte INPT0 @$38
|
||||
byte INPT1 @$39
|
||||
byte INPT2 @$3A
|
||||
byte INPT3 @$3B
|
||||
byte INPT4 @$3C
|
||||
byte INPT5 @$3D
|
||||
byte SWCHA @$0280
|
||||
byte SWACNT @$0281
|
||||
byte SWCHB @$0282
|
||||
byte SWBCNT @$0283
|
||||
byte INTIM @$0284
|
||||
byte INSTAT @$0285
|
||||
byte TIM1T @$0294
|
||||
byte TIM8T @$0295
|
||||
byte TIM64T @$0296
|
||||
byte T1024T @$0297
|
||||
volatile byte VSYNC @$00
|
||||
volatile byte VBLANK @$01
|
||||
volatile byte WSYNC @$02
|
||||
volatile byte RSYNC @$03
|
||||
volatile byte NUSIZ0 @$04
|
||||
volatile byte NUSIZ1 @$05
|
||||
volatile byte COLUP0 @$06
|
||||
volatile byte COLUP1 @$07
|
||||
volatile byte COLUPF @$08
|
||||
volatile byte COLUBK @$09
|
||||
volatile byte CTRLPF @$0A
|
||||
volatile byte REFP0 @$0B
|
||||
volatile byte REFP1 @$0C
|
||||
volatile byte PF0 @$0D
|
||||
volatile byte PF1 @$0E
|
||||
volatile byte PF2 @$0F
|
||||
volatile byte RESP0 @$10
|
||||
volatile byte RESP1 @$11
|
||||
volatile byte RESM0 @$12
|
||||
volatile byte RESM1 @$13
|
||||
volatile byte RESBL @$14
|
||||
volatile byte AUDC0 @$15
|
||||
volatile byte AUDC1 @$16
|
||||
volatile byte AUDF0 @$17
|
||||
volatile byte AUDF1 @$18
|
||||
volatile byte AUDV0 @$19
|
||||
volatile byte AUDV1 @$1A
|
||||
volatile byte GRP0 @$1B
|
||||
volatile byte GRP1 @$1C
|
||||
volatile byte ENAM0 @$1D
|
||||
volatile byte ENAM1 @$1E
|
||||
volatile byte ENABL @$1F
|
||||
volatile byte HMP0 @$20
|
||||
volatile byte HMP1 @$21
|
||||
volatile byte HMM0 @$22
|
||||
volatile byte HMM1 @$23
|
||||
volatile byte HMBL @$24
|
||||
volatile byte VDELP0 @$25
|
||||
volatile byte VDELP1 @$26
|
||||
volatile byte VDELBL @$27
|
||||
volatile byte RESMP0 @$28
|
||||
volatile byte RESMP1 @$29
|
||||
volatile byte HMOVE @$2A
|
||||
volatile byte HMCLR @$2B
|
||||
volatile byte CXCLR @$2C
|
||||
volatile byte CXM0P @$30
|
||||
volatile byte CXM1P @$31
|
||||
volatile byte CXP0FB @$32
|
||||
volatile byte CXP1FB @$33
|
||||
volatile byte CXM0FB @$34
|
||||
volatile byte CXM1FB @$35
|
||||
volatile byte CXBLPF @$36
|
||||
volatile byte CXPPMM @$37
|
||||
volatile byte INPT0 @$38
|
||||
volatile byte INPT1 @$39
|
||||
volatile byte INPT2 @$3A
|
||||
volatile byte INPT3 @$3B
|
||||
volatile byte INPT4 @$3C
|
||||
volatile byte INPT5 @$3D
|
||||
volatile byte SWCHA @$0280
|
||||
volatile byte SWACNT @$0281
|
||||
volatile byte SWCHB @$0282
|
||||
volatile byte SWBCNT @$0283
|
||||
volatile byte INTIM @$0284
|
||||
volatile byte INSTAT @$0285
|
||||
volatile byte TIM1T @$0294
|
||||
volatile byte TIM8T @$0295
|
||||
volatile byte TIM64T @$0296
|
||||
volatile byte T1024T @$0297
|
||||
|
||||
|
||||
macro asm void wsync() {
|
||||
@@ -79,28 +79,28 @@ macro asm void wsync() {
|
||||
}
|
||||
|
||||
macro asm void start_frame() {
|
||||
LDA #0
|
||||
STA VBLANK
|
||||
LDA #2
|
||||
STA VSYNC
|
||||
STA WSYNC
|
||||
STA WSYNC
|
||||
STA WSYNC
|
||||
LDA #0
|
||||
STA VSYNC
|
||||
LDX #37
|
||||
? LDA #0
|
||||
! STA VBLANK
|
||||
? LDA #2
|
||||
! STA VSYNC
|
||||
! STA WSYNC
|
||||
! STA WSYNC
|
||||
! STA WSYNC
|
||||
! LDA #0
|
||||
! STA VSYNC
|
||||
? LDX #37
|
||||
start_frame_loop:
|
||||
STA WSYNC
|
||||
DEX
|
||||
! STA WSYNC
|
||||
? DEX
|
||||
BNE start_frame_loop
|
||||
}
|
||||
macro asm void end_frame() {
|
||||
LDA #%01000010
|
||||
STA VBLANK
|
||||
LDX #30
|
||||
? LDA #%01000010
|
||||
! STA VBLANK
|
||||
? LDX #30
|
||||
end_frame_loop:
|
||||
STA WSYNC
|
||||
DEX
|
||||
! STA WSYNC
|
||||
? DEX
|
||||
BNE end_frame_loop
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user