Updated test programs use of CIA_INTERRUPT_CLEAR.

This commit is contained in:
Jesper Gravgaard 2024-01-02 19:21:16 +01:00
parent 771fa9dbcd
commit 8416086294
86 changed files with 310 additions and 310 deletions

View File

@ -38,7 +38,7 @@ void init_irq() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -45,7 +45,7 @@ void init_irq() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -54,7 +54,7 @@ void init_irq() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -203,7 +203,7 @@ void splash_run() {
// Stop kernel IRQ
SEI();
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Disable kernal & basic & IO
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_ALL;

View File

@ -78,7 +78,7 @@ void demo_init() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Acknowledge any timer IRQ
asm { lda CIA1_INTERRUPT }
// Acknowledge any VIC IRQ

View File

@ -122,7 +122,7 @@ void part1_run() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Acknowledge any timer IRQ
asm { lda CIA1_INTERRUPT }
// Acknowledge any VIC IRQ

View File

@ -295,7 +295,7 @@ void part2_run() {
// Enable & initialize sprites
*SPRITES_ENABLE = 0xff;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Acknowledge any timer IRQ
asm { lda CIA1_INTERRUPT }
// Acknowledge any VIC IRQ

View File

@ -7,7 +7,7 @@ void main() {
*GHOST_BYTE = 0;
asm { sei }
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to 0xfa
VICII->CONTROL1 &= 0x7f;
VICII->RASTER = 0xfa;

View File

@ -18,7 +18,7 @@ void main() {
asm { sei }
(*musicInit)();
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $fd
VICII->CONTROL1 &=$7f;
VICII->RASTER = $fd;

View File

@ -24,7 +24,7 @@ void main() {
sta $d412
}
asm { sei }
CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
*KERNEL_NMI = &nmi;
CIA2->TIMER_A = 0x88; // speed
CIA2->INTERRUPT = 0x81;

View File

@ -36,7 +36,7 @@ void main() {
// Set up raster interrupts C64 style
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to 0xff
VICII->RASTER = 0xff;
VICII->CONTROL1 &= 0x7f;

View File

@ -73,7 +73,7 @@ void main() {
// Set up raster interrupts C64 style
asm { sei }
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to 0x16
VICII->RASTER = IRQ_Y;
VICII->CONTROL1 &= 0x7f;

View File

@ -7,7 +7,7 @@ void main() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -17,7 +17,7 @@ const byte WHITE = 1;
const byte BLACK = 0;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
// Processor port data direction register
byte* const PROCPORT_DDR = (byte*)$00;
@ -36,7 +36,7 @@ void main() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -19,7 +19,7 @@ const byte WHITE = 1;
const byte BLACK = 0;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
// Processor port data direction register
byte* const PROCPORT_DDR = (byte*)$00;
@ -38,7 +38,7 @@ void main() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -17,7 +17,7 @@ const byte WHITE = 1;
const byte BLACK = 0;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
// Processor port data direction register
byte* const PROCPORT_DDR = (byte*)$00;
@ -36,7 +36,7 @@ void main() {
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -6,7 +6,7 @@ byte* const SCREEN = (byte*)$400;
void main() {
asm { sei }
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $60
*VICII_CONTROL1 &=$7f;
*RASTER = $60;

View File

@ -15,12 +15,12 @@ const byte WHITE = 1;
const byte BLACK = 0;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
void main() {
asm { sei }
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -11,13 +11,13 @@ byte* const BG_COLOR = (byte*)$d020;
byte* const FGCOL = (byte*)$d021;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
void main() {
asm { sei }
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $0fd
*VICII_CONTROL1 &=$7f;
*RASTER = $fd;

View File

@ -16,12 +16,12 @@ const byte WHITE = 1;
const byte BLACK = 0;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
void main() {
asm { sei }
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $100
*VICII_CONTROL1 |=$80;
*RASTER = $00;

View File

@ -11,13 +11,13 @@ const byte IRQ_RASTER = %00000001;
byte* const BG_COLOR = (byte*)$d020;
byte* const CIA1_INTERRUPT = (byte*)$dc0d;
const byte CIA_INTERRUPT_CLEAR = $7f;
const byte CIA_INTERRUPT_CLEAR_ALL = $7f;
void main() {
asm { sei }
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
// Set raster line to $0fd
*VICII_CONTROL1 &=$7f;
*RASTER = $fd;

View File

@ -40,7 +40,7 @@ void init() {
}
// enable the interrupt
asm { sei }
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL;
*IRQ_ENABLE = IRQ_RASTER;
*IRQ_STATUS = IRQ_RASTER;
*KERNEL_IRQ = &plex_irq;

View File

@ -15,7 +15,7 @@
.segment Basic
:BasicUpstart(__start)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off
.const VICII_BMM = $20
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
@ -298,9 +298,9 @@ init_irq: {
// *PROCPORT = PROCPORT_RAM_IO
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -146,7 +146,7 @@ init_irq: scope:[init_irq] from main::@7
asm { sei }
[62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[63] *PROCPORT = PROCPORT_RAM_IO
[64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[66] *RASTER = 0
[67] *IRQ_ENABLE = IRQ_RASTER

View File

@ -333,7 +333,7 @@ init_irq: scope:[init_irq] from main::@7
asm { sei }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -394,7 +394,7 @@ __constant char * const BG_COLOR = (char *)$d021
__constant char *BITMAP = (char *)$2000
__constant const char BLACK = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *)$d011
__constant char * const D018 = (char *)$d018
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
@ -1272,7 +1272,7 @@ init_irq: scope:[init_irq] from main::@7
asm { sei }
[62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[63] *PROCPORT = PROCPORT_RAM_IO
[64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[66] *RASTER = 0
[67] *IRQ_ENABLE = IRQ_RASTER
@ -1493,7 +1493,7 @@ Statement [51] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8
Removing always clobbered register reg byte a as potential for zp[1]:9 [ bitmap_init::y#2 bitmap_init::y#1 ]
Statement [62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [63] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [66] *RASTER = 0 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [67] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
@ -1533,7 +1533,7 @@ Statement [44] bitmap_init::$7 = bitmap_init::y#2 & 7 [ bitmap_init::y#2 bitmap_
Statement [51] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:12 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
Statement [62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [63] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [66] *RASTER = 0 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [67] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
@ -1649,7 +1649,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off
.const VICII_BMM = $20
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
@ -2101,9 +2101,9 @@ init_irq: {
// [63] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -2344,7 +2344,7 @@ __constant char * const BG_COLOR = (char *) 53281
__constant char *BITMAP = (char *) 8192
__constant const char BLACK = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *) 53265
__constant char * const D018 = (char *) 53272
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
@ -2485,7 +2485,7 @@ Score: 3198
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off
.const VICII_BMM = $20
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
@ -2900,10 +2900,10 @@ init_irq: {
// [63] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 |=$80
// [65] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -2,7 +2,7 @@ __constant char * const BG_COLOR = (char *) 53281
__constant char *BITMAP = (char *) 8192
__constant const char BLACK = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *) 53265
__constant char * const D018 = (char *) 53272
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534

View File

@ -14,7 +14,7 @@
.segment Basic
:BasicUpstart(main)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
@ -123,9 +123,9 @@ main: {
sta GHOST_BYTE
// asm
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->CONTROL1 &= 0x7f
// Set raster line to 0xfa

View File

@ -29,7 +29,7 @@ void main()
main: scope:[main] from
[14] *GHOST_BYTE = 0
asm { sei }
[16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[17] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[18] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fa
[19] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER

View File

@ -8,7 +8,7 @@ void main()
main: scope:[main] from __start
*GHOST_BYTE = 0
asm { sei }
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fa
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -61,7 +61,7 @@ __start::@return: scope:[__start] from __start::@1
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const GHOST_BYTE = (char *)$3fff
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant const char IRQ_RASTER = 1
@ -164,7 +164,7 @@ void main()
main: scope:[main] from
[14] *GHOST_BYTE = 0
asm { sei }
[16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[17] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[18] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fa
[19] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -201,7 +201,7 @@ Statement [11] *HARDWARE_IRQ = &irq_bottom_2 [ ] ( [ ] { } ) always clobbers r
Statement [12] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = RED [ ] ( [ ] { } ) always clobbers reg byte a
Statement [13] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [14] *GHOST_BYTE = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fa [ ] ( [ ] { } ) always clobbers reg byte a
Statement [19] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -248,7 +248,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
@ -370,9 +370,9 @@ main: {
sta GHOST_BYTE
// asm { sei }
sei
// [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [17] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line to 0xfa
@ -425,7 +425,7 @@ Succesful ASM optimization Pass5RedundantLabelElimination
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const GHOST_BYTE = (char *) 16383
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant const char IRQ_RASTER = 1
@ -471,7 +471,7 @@ Score: 422
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
/// RSEL| Display window height | First line | Last line
/// ----+--------------------------+-------------+----------
@ -605,10 +605,10 @@ main: {
// asm
// asm { sei }
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [16] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->CONTROL1 &= 0x7f
// [17] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2

View File

@ -1,5 +1,5 @@
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const GHOST_BYTE = (char *) 16383
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant const char IRQ_RASTER = 1

View File

@ -14,7 +14,7 @@
.segment Basic
:BasicUpstart(main)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -62,9 +62,9 @@ main: {
sei
// (*musicInit)()
jsr musicInit
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->CONTROL1 &=$7f
// Set raster line to $fd

View File

@ -18,7 +18,7 @@ main: scope:[main] from
[6] callexecute *musicInit
to:main::@1
main::@1: scope:[main] from main
[7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[8] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[9] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fd
[10] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER

View File

@ -12,7 +12,7 @@ main: scope:[main] from __start::@1
callexecute *musicInit
to:main::@1
main::@1: scope:[main] from main
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fd
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -52,7 +52,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant const char IRQ_RASTER = 1
__constant void (** const KERNEL_IRQ)() = (void (**)())$314
__constant char MUSIC[] = kickasm {{ .const music = LoadSid("toiletrensdyr.sid")
@ -125,7 +125,7 @@ main: scope:[main] from
[6] callexecute *musicInit
to:main::@1
main::@1: scope:[main] from main
[7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[8] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[9] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fd
[10] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -147,7 +147,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] callexecute *musicPlay [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [2] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] callexecute *musicInit [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $fd [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -188,7 +188,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -249,9 +249,9 @@ main: {
jmp __b1
// main::@1
__b1:
// [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [8] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line to $fd
@ -302,7 +302,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant const char IRQ_RASTER = 1
__constant void (** const KERNEL_IRQ)() = (void (**)()) 788
__constant char MUSIC[] = kickasm {{ .const music = LoadSid("toiletrensdyr.sid")
@ -344,7 +344,7 @@ Score: 110
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -406,10 +406,10 @@ main: {
// [6] callexecute *musicInit -- call__deref_pprc1
jsr musicInit
// main::@1
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [7] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->CONTROL1 &=$7f
// [8] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2

View File

@ -1,5 +1,5 @@
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant const char IRQ_RASTER = 1
__constant void (** const KERNEL_IRQ)() = (void (**)()) 788
__constant char MUSIC[] = kickasm {{ .const music = LoadSid("toiletrensdyr.sid")

View File

@ -10,7 +10,7 @@
.segment Basic
:BasicUpstart(__start)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.const SAMPLE_SIZE = $6100
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4
@ -124,8 +124,8 @@ main: {
sta $d40b
sta $d412
sei
// CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR
// CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *KERNEL_NMI = &nmi
lda #<nmi

View File

@ -52,7 +52,7 @@ void main()
main: scope:[main] from __start::@1
asm { lda#$ff sta$d406 sta$d40d sta$d414 lda#$49 sta$d404 sta$d40b sta$d412 }
asm { sei }
[25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[26] *KERNEL_NMI = &nmi
[27] *((unsigned int *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A) = $88
[28] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = $81

View File

@ -9,7 +9,7 @@ void main()
main: scope:[main] from __start::@1
asm { lda#$ff sta$d406 sta$d40d sta$d414 lda#$49 sta$d404 sta$d40b sta$d412 }
asm { sei }
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*KERNEL_NMI = &nmi
*((unsigned int *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A) = $88
*((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = $81
@ -74,7 +74,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *)$dd00
__constant char * const CIA2_INTERRUPT = (char *)$dd0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const KERNEL_NMI)() = (void (**)())$318
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4
@ -199,7 +199,7 @@ void main()
main: scope:[main] from __start::@1
asm { lda#$ff sta$d406 sta$d40d sta$d414 lda#$49 sta$d404 sta$d40b sta$d412 }
asm { sei }
[25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[26] *KERNEL_NMI = &nmi
[27] *((unsigned int *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A) = $88
[28] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = $81
@ -247,7 +247,7 @@ Statement [18] nmi::$1 = *sample & $f [ nmi::$1 ] ( [ nmi::$1 ] { } ) always c
Statement [20] *KERNEL_NMI = &nmi2 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement asm { lda#$ff sta$d406 sta$d40d sta$d414 lda#$49 sta$d404 sta$d40b sta$d412 } always clobbers reg byte a
Statement [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [26] *KERNEL_NMI = &nmi [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [27] *((unsigned int *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A) = $88 [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [28] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = $81 [ ] ( main:3 [ ] { } ) always clobbers reg byte a
@ -295,7 +295,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.const SAMPLE_SIZE = $6100
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4
@ -442,8 +442,8 @@ main: {
sta $d412
// asm { sei }
sei
// [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR
// [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [26] *KERNEL_NMI = &nmi -- _deref_qprc1=pprc2
lda #<nmi
@ -499,7 +499,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *) 56576
__constant char * const CIA2_INTERRUPT = (char *) 56589
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const KERNEL_NMI)() = (void (**)()) 792
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4
@ -543,7 +543,7 @@ Score: 579
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.const SAMPLE_SIZE = $6100
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.const OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4
@ -696,9 +696,9 @@ main: {
sta $d412
// asm { sei }
sei
// CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR
// [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR
// CIA2->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [25] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *KERNEL_NMI = &nmi
// [26] *KERNEL_NMI = &nmi -- _deref_qprc1=pprc2

View File

@ -1,6 +1,6 @@
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *) 56576
__constant char * const CIA2_INTERRUPT = (char *) 56589
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const KERNEL_NMI)() = (void (**)()) 792
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_A = 4

View File

@ -17,7 +17,7 @@
.text toIntString(main) // NNNN
.byte $00, $00, $00 //
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -179,10 +179,10 @@ main: {
sta.z memoryRemap.lowerPageOffset
sta.z memoryRemap.lowerPageOffset+1
jsr memoryRemap
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Set up raster interrupts C64 style
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->RASTER = 0xff
// Set raster line to 0xff

View File

@ -54,7 +54,7 @@ main::@1: scope:[main] from main::@7
[26] call memoryRemap
to:main::@8
main::@8: scope:[main] from main::@1
[27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff
[29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[30] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER

View File

@ -170,7 +170,7 @@ main::@1: scope:[main] from main::@7
call memoryRemap
to:main::@8
main::@8: scope:[main] from main::@1
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -248,7 +248,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const DEFAULT_SCREEN = (char *)$800
__constant struct F018_DMAGIC * const DMA = (struct F018_DMAGIC *)$d700
__constant const char DMA_COMMAND_COPY = 0
@ -717,7 +717,7 @@ main::@1: scope:[main] from main::@7
[26] call memoryRemap
to:main::@8
main::@8: scope:[main] from main::@1
[27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff
[29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[30] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -901,7 +901,7 @@ Statement [18] *PROCPORT = PROCPORT_RAM_IO [ memcpy_dma_command4 ] ( [ memcpy_d
Statement [19] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 1 [ memcpy_dma_command4 ] ( [ memcpy_dma_command4 ] { } ) always clobbers reg byte z
Statement asm { lda#0 } always clobbers reg byte a
Statement [24] callexecute *musicInit [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y reg byte z
Statement [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte z
Statement [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte z
Statement [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff [ ] ( [ ] { } ) always clobbers reg byte z
Statement [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte z
@ -943,7 +943,7 @@ Statement [18] *PROCPORT = PROCPORT_RAM_IO [ memcpy_dma_command4 ] ( [ memcpy_d
Statement [19] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 1 [ memcpy_dma_command4 ] ( [ memcpy_dma_command4 ] { } ) always clobbers reg byte z
Statement asm { lda#0 } always clobbers reg byte a
Statement [24] callexecute *musicInit [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y reg byte z
Statement [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte z
Statement [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte z
Statement [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff [ ] ( [ ] { } ) always clobbers reg byte z
Statement [29] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte z
@ -1065,7 +1065,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.byte $00, $00, $00 //
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -1299,10 +1299,10 @@ main: {
jmp __b8
// main::@8
__b8:
// [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Set up raster interrupts C64 style
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff -- _deref_pbuc1=vbuc2
// Set raster line to 0xff
@ -1633,7 +1633,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const DEFAULT_SCREEN = (char *) 2048
__constant struct F018_DMAGIC * const DMA = (struct F018_DMAGIC *) 55040
__constant const char DMA_COMMAND_COPY = 0
@ -1769,7 +1769,7 @@ Score: 3045
.byte $00, $00, $00 //
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -1987,11 +1987,11 @@ main: {
sta.z memoryRemap.lowerPageOffset+1
jsr memoryRemap
// main::@8
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [27] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Set up raster interrupts C64 style
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->RASTER = 0xff
// [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = $ff -- _deref_pbuc1=vbuc2

View File

@ -1,5 +1,5 @@
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const DEFAULT_SCREEN = (char *) 2048
__constant struct F018_DMAGIC * const DMA = (struct F018_DMAGIC *) 55040
__constant const char DMA_COMMAND_COPY = 0

View File

@ -18,7 +18,7 @@
.segment Basic
:BasicUpstart(__start)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -508,9 +508,9 @@ main: {
// asm
// Set up raster interrupts C64 style
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->RASTER = IRQ_Y
// Set raster line to 0x16

View File

@ -245,7 +245,7 @@ main::@6: scope:[main] from main::@4 main::@6
to:main::@7
main::@7: scope:[main] from main::@6
asm { sei }
[130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y
[132] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[133] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER

View File

@ -133,7 +133,7 @@ main::@8: scope:[main] from main::@7 main::@8
to:main::@9
main::@9: scope:[main] from main::@8
asm { sei }
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -460,7 +460,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const COLORRAM = (char *)$d800
__constant char * const DEFAULT_SCREEN = (char *)$400
__constant char GREETING[] = " DOUBLEFLASH ADTBM SY2002 TAYGER SERIOUSLY LIBI IN PARADIZE LGB BLUEWAYSW SAUSAGE BIT SHIFTER INDIOCOLIFA GRUMPYNINJA 0-LIMITS CHEVERON DR. COMMODORE "
@ -1559,7 +1559,7 @@ main::@6: scope:[main] from main::@4 main::@6
to:main::@7
main::@7: scope:[main] from main::@6
asm { sei }
[130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y
[132] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
[133] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
@ -1867,7 +1867,7 @@ Statement [124] PALETTE_RED[main::i#2] = PAL_RED[main::i#2] [ main::i#2 ] ( main
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ]
Statement [125] PALETTE_GREEN[main::i#2] = PAL_GREEN[main::i#2] [ main::i#2 ] ( main:7 [ main::i#2 ] { } ) always clobbers reg byte a
Statement [126] PALETTE_BLUE[main::i#2] = PAL_BLUE[main::i#2] [ main::i#2 ] ( main:7 [ main::i#2 ] { } ) always clobbers reg byte a
Statement [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [132] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( main:7 [ ] { } ) always clobbers reg byte a
Statement [133] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( main:7 [ ] { } ) always clobbers reg byte z
@ -1925,7 +1925,7 @@ Statement [116] callexecute *songInit [ ] ( main:7 [ ] { } ) always clobbers r
Statement [124] PALETTE_RED[main::i#2] = PAL_RED[main::i#2] [ main::i#2 ] ( main:7 [ main::i#2 ] { } ) always clobbers reg byte a
Statement [125] PALETTE_GREEN[main::i#2] = PAL_GREEN[main::i#2] [ main::i#2 ] ( main:7 [ main::i#2 ] { } ) always clobbers reg byte a
Statement [126] PALETTE_BLUE[main::i#2] = PAL_BLUE[main::i#2] [ main::i#2 ] ( main:7 [ main::i#2 ] { } ) always clobbers reg byte a
Statement [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y [ ] ( main:7 [ ] { } ) always clobbers reg byte z
Statement [132] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f [ ] ( main:7 [ ] { } ) always clobbers reg byte a
Statement [133] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER [ ] ( main:7 [ ] { } ) always clobbers reg byte z
@ -2090,7 +2090,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -2803,9 +2803,9 @@ main: {
// asm { sei }
// Set up raster interrupts C64 style
sei
// [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y -- _deref_pbuc1=vbuc2
// Set raster line to 0x16
@ -3073,7 +3073,7 @@ Fixing long branch [162] bne __b20 to beq
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const COLORRAM = (char *) 55296
__constant char * const DEFAULT_SCREEN = (char *) 1024
__constant char GREETING[] = " DOUBLEFLASH ADTBM SY2002 TAYGER SERIOUSLY LIBI IN PARADIZE LGB BLUEWAYSW SAUSAGE BIT SHIFTER INDIOCOLIFA GRUMPYNINJA 0-LIMITS CHEVERON DR. COMMODORE "
@ -3293,7 +3293,7 @@ Score: 10519
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -4017,10 +4017,10 @@ main: {
// asm { sei }
// Set up raster interrupts C64 style
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
ldz #CIA_INTERRUPT_CLEAR
ldz #CIA_INTERRUPT_CLEAR_ALL
stz CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// VICII->RASTER = IRQ_Y
// [131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y -- _deref_pbuc1=vbuc2

View File

@ -1,5 +1,5 @@
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const COLORRAM = (char *) 55296
__constant char * const DEFAULT_SCREEN = (char *) 1024
__constant char GREETING[] = " DOUBLEFLASH ADTBM SY2002 TAYGER SERIOUSLY LIBI IN PARADIZE LGB BLUEWAYSW SAUSAGE BIT SHIFTER INDIOCOLIFA GRUMPYNINJA 0-LIMITS CHEVERON DR. COMMODORE "

View File

@ -14,7 +14,7 @@
.segment Basic
:BasicUpstart(main)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -83,9 +83,9 @@ main: {
// *PROCPORT = PROCPORT_RAM_IO
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -13,7 +13,7 @@ main: scope:[main] from
asm { sei }
[4] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[5] *PROCPORT = PROCPORT_RAM_IO
[6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[7] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[8] *RASTER = 0
[9] *IRQ_ENABLE = IRQ_RASTER

View File

@ -8,7 +8,7 @@ main: scope:[main] from __start
asm { sei }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -60,7 +60,7 @@ __constant char * const BG_COLOR = (char *)$d021
__constant const char BLACK = 0
__constant char * const BORDER_COLOR = (char *)$d020
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant char * const IRQ_ENABLE = (char *)$d01a
__constant const char IRQ_RASTER = 1
@ -137,7 +137,7 @@ main: scope:[main] from
asm { sei }
[4] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[5] *PROCPORT = PROCPORT_RAM_IO
[6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[7] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[8] *RASTER = 0
[9] *IRQ_ENABLE = IRQ_RASTER
@ -170,7 +170,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [2] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [4] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -217,7 +217,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -293,9 +293,9 @@ main: {
// [5] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [7] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -359,7 +359,7 @@ __constant char * const BG_COLOR = (char *) 53281
__constant const char BLACK = 0
__constant char * const BORDER_COLOR = (char *) 53280
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
@ -400,7 +400,7 @@ Score: 294
:BasicUpstart(main)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -479,10 +479,10 @@ main: {
// [5] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [6] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 |=$80
// [7] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -2,7 +2,7 @@ __constant char * const BG_COLOR = (char *) 53281
__constant const char BLACK = 0
__constant char * const BORDER_COLOR = (char *) 53280
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1

View File

@ -10,7 +10,7 @@
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -57,9 +57,9 @@ main: {
// *PROCPORT = PROCPORT_RAM_IO
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -14,7 +14,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER

View File

@ -7,7 +7,7 @@ main: scope:[main] from __start
asm { sei }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -48,7 +48,7 @@ SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *)$d021
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant char * const IRQ_ENABLE = (char *)$d01a
@ -120,7 +120,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER
@ -145,7 +145,7 @@ Statement [2] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byt
Statement [3] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -177,7 +177,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -231,9 +231,9 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -275,7 +275,7 @@ FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274
@ -311,7 +311,7 @@ Score: 282
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -370,10 +370,10 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -1,7 +1,7 @@
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274

View File

@ -11,7 +11,7 @@
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -65,9 +65,9 @@ main: {
// *PROCPORT = PROCPORT_RAM_IO
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -14,7 +14,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER

View File

@ -7,7 +7,7 @@ main: scope:[main] from __start
asm { sei }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -48,7 +48,7 @@ SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *)$d021
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant char * const IRQ_ENABLE = (char *)$d01a
@ -120,7 +120,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER
@ -145,7 +145,7 @@ Statement [2] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byt
Statement [3] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -177,7 +177,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -238,9 +238,9 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -282,7 +282,7 @@ FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274
@ -319,7 +319,7 @@ Score: 512
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -385,10 +385,10 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -1,7 +1,7 @@
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274

View File

@ -10,7 +10,7 @@
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -63,9 +63,9 @@ main: {
// *PROCPORT = PROCPORT_RAM_IO
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -14,7 +14,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER

View File

@ -7,7 +7,7 @@ main: scope:[main] from __start
asm { sei }
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -48,7 +48,7 @@ SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *)$d021
__constant void (** const HARDWARE_IRQ)() = (void (**)())$fffe
__constant char * const IRQ_ENABLE = (char *)$d01a
@ -120,7 +120,7 @@ main: scope:[main] from
asm { sei }
[5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[6] *PROCPORT = PROCPORT_RAM_IO
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[9] *RASTER = 0
[10] *IRQ_ENABLE = IRQ_RASTER
@ -145,7 +145,7 @@ Statement [2] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byt
Statement [3] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [5] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -176,7 +176,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -236,9 +236,9 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -280,7 +280,7 @@ FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274
@ -316,7 +316,7 @@ Score: 402
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in $A000, $E000 I/O in $D000
@ -381,10 +381,10 @@ main: {
// [6] *PROCPORT = PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
lda #PROCPORT_RAM_IO
sta.z PROCPORT
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -1,7 +1,7 @@
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const IRQ_ENABLE = (char *) 53274

View File

@ -14,7 +14,7 @@
.segment Basic
:BasicUpstart(__start)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -106,9 +106,9 @@ table_driven_irq: {
main: {
// asm
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 &=$7f
// Set raster line to $60

View File

@ -48,7 +48,7 @@ table_driven_irq::@2: scope:[table_driven_irq] from table_driven_irq::@1
void main()
main: scope:[main] from __start::@1
asm { sei }
[19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[21] *RASTER = $60
[22] *IRQ_ENABLE = IRQ_RASTER

View File

@ -7,7 +7,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start::@1
asm { sei }
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 & $7f
*RASTER = $60
*IRQ_ENABLE = IRQ_RASTER
@ -82,7 +82,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char IRQ_CHANGE_IDX[] = { $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT }
__constant const char IRQ_CHANGE_NEXT = $7f
__constant char IRQ_CHANGE_VAL[] = { $b, $b, $63, 0, 0, $80, 7, 7, $83, 0, 0, $60 }
@ -248,7 +248,7 @@ table_driven_irq::@2: scope:[table_driven_irq] from table_driven_irq::@1
void main()
main: scope:[main] from __start::@1
asm { sei }
[19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[21] *RASTER = $60
[22] *IRQ_ENABLE = IRQ_RASTER
@ -292,7 +292,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:3 [ table_d
Statement [14] irq_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] (SCREEN+-VICII_SIZE+$3f8)[table_driven_irq::idx#0] = table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a
Statement [17] VICII_BASE[table_driven_irq::idx#0] = table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a
Statement [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [21] *RASTER = $60 [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [22] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a
@ -305,7 +305,7 @@ Statement [11] *IRQ_STATUS = IRQ_RASTER [ table_driven_irq::val#0 ] ( [ table_d
Statement [14] irq_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] (SCREEN+-VICII_SIZE+$3f8)[table_driven_irq::idx#0] = table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a
Statement [17] VICII_BASE[table_driven_irq::idx#0] = table_driven_irq::val#0 [ irq_idx ] ( [ irq_idx ] { } ) always clobbers reg byte a
Statement [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [21] *RASTER = $60 [ ] ( main:3 [ ] { } ) always clobbers reg byte a
Statement [22] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3 [ ] { } ) always clobbers reg byte a
@ -355,7 +355,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -480,9 +480,9 @@ table_driven_irq: {
main: {
// asm { sei }
sei
// [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line to $60
@ -551,7 +551,7 @@ Fixing long branch [75] bcs $ea81 to bcc
FINAL SYMBOL TABLE
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char IRQ_CHANGE_IDX[] = { $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT }
__constant const char IRQ_CHANGE_NEXT = $7f
__constant char IRQ_CHANGE_VAL[] = { $b, $b, $63, 0, 0, $80, 7, 7, $83, 0, 0, $60 }
@ -601,7 +601,7 @@ Score: 625
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// VICII IRQ Status/Enable Raster
// @see #IRQ_ENABLE #IRQ_STATUS
/// 0 | RST| Reaching a certain raster line. The line is specified by writing
@ -725,10 +725,10 @@ main: {
// asm
// asm { sei }
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [19] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VICII_CONTROL1 &=$7f
// [20] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2

View File

@ -1,5 +1,5 @@
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char IRQ_CHANGE_IDX[] = { $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT }
__constant const char IRQ_CHANGE_NEXT = $7f
__constant char IRQ_CHANGE_VAL[] = { $b, $b, $63, 0, 0, $80, 7, 7, $83, 0, 0, $60 }

View File

@ -10,7 +10,7 @@
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -37,9 +37,9 @@ irq: {
main: {
// asm
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -12,7 +12,7 @@ irq::@return: scope:[irq] from irq
void main()
main: scope:[main] from
asm { sei }
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[7] *RASTER = 0
[8] *IRQ_ENABLE = IRQ_RASTER

View File

@ -5,7 +5,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start
asm { sei }
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -40,7 +40,7 @@ SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *)$d01a
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *)$d019
@ -95,7 +95,7 @@ irq::@return: scope:[irq] from irq
void main()
main: scope:[main] from
asm { sei }
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[7] *RASTER = 0
[8] *IRQ_ENABLE = IRQ_RASTER
@ -117,7 +117,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [0] *BG_COLOR = WHITE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -148,7 +148,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -182,9 +182,9 @@ irq: {
main: {
// asm { sei }
sei
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -226,7 +226,7 @@ FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273
@ -257,7 +257,7 @@ Score: 98
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -294,10 +294,10 @@ main: {
// asm
// asm { sei }
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -1,7 +1,7 @@
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273

View File

@ -8,7 +8,7 @@
.segment Basic
:BasicUpstart(main)
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -71,9 +71,9 @@ main: {
.label i = 7
// asm
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 &=$7f
// Set raster line to $0fd

View File

@ -14,7 +14,7 @@ irq::@3: scope:[irq] from irq::@2 irq::@7
[4] irq::$2 = irq::i#7 + irq::j#4
[5] irq::$3 = irq::$2 + irq::k#2
[6] *FGCOL = irq::$3
[7] call sub_irq
[7] call sub_irq
to:irq::@7
irq::@7: scope:[irq] from irq::@3
[8] irq::k#1 = ++ irq::k#2
@ -39,7 +39,7 @@ irq::@return: scope:[irq] from irq::@6
void main()
main: scope:[main] from
asm { sei }
[18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[20] *RASTER = $fd
[21] *IRQ_ENABLE = IRQ_RASTER
@ -57,7 +57,7 @@ main::@3: scope:[main] from main::@2 main::@6
[27] main::$0 = main::i#7 + main::j#4
[28] main::$1 = main::$0 + main::k#2
[29] *FGCOL = main::$1
[30] call sub_main
[30] call sub_main
to:main::@6
main::@6: scope:[main] from main::@3
[31] main::k#1 = ++ main::k#2

View File

@ -5,7 +5,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start
asm { sei }
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 & $7f
*RASTER = $fd
*IRQ_ENABLE = IRQ_RASTER
@ -208,7 +208,7 @@ __start::@return: scope:[__start] from __start::@1
SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *)$d021
__constant char * const IRQ_ENABLE = (char *)$d01a
__constant const char IRQ_RASTER = 1
@ -587,7 +587,7 @@ irq::@return: scope:[irq] from irq::@6
void main()
main: scope:[main] from
asm { sei }
[18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[20] *RASTER = $fd
[21] *IRQ_ENABLE = IRQ_RASTER
@ -803,7 +803,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:20 [ irq::j
Removing always clobbered register reg byte a as potential for zp[1]:16 [ irq::k#2 irq::k#1 ]
Statement [5] irq::$3 = irq::$2 + irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] { } ) always clobbers reg byte a
Statement [14] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] *RASTER = $fd [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -826,7 +826,7 @@ Statement [57] sub_main::$1 = sub_main::$0 + sub_main::k#2 [ sub_main::i#6 sub_m
Statement [4] irq::$2 = irq::i#7 + irq::j#4 [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$2 ] { } ) always clobbers reg byte a
Statement [5] irq::$3 = irq::$2 + irq::k#2 [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] ( [ irq::i#7 irq::j#4 irq::k#2 irq::$3 ] { } ) always clobbers reg byte a
Statement [14] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] *RASTER = $fd [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -913,7 +913,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(main)
// Global Constants & labels
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -1029,9 +1029,9 @@ main: {
.label i = 7
// asm { sei }
sei
// [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line to $0fd
@ -1402,7 +1402,7 @@ Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
@ -1497,7 +1497,7 @@ Score: 314173671
:BasicUpstart(main)
// Global Constants & labels
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -1600,10 +1600,10 @@ main: {
// asm
// asm { sei }
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [18] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 &=$7f
// [19] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2

View File

@ -1,6 +1,6 @@
__constant char * const BG_COLOR = (char *) 53280
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const FGCOL = (char *) 53281
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1

View File

@ -10,7 +10,7 @@
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -37,9 +37,9 @@ irq: {
main: {
// asm
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// Set raster line to $100

View File

@ -12,7 +12,7 @@ irq::@return: scope:[irq] from irq
void main()
main: scope:[main] from
asm { sei }
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[7] *RASTER = 0
[8] *IRQ_ENABLE = IRQ_RASTER

View File

@ -5,7 +5,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start
asm { sei }
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
@ -40,7 +40,7 @@ SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *)$d01a
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *)$d019
@ -95,7 +95,7 @@ irq::@return: scope:[irq] from irq
void main()
main: scope:[main] from
asm { sei }
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80
[7] *RASTER = 0
[8] *IRQ_ENABLE = IRQ_RASTER
@ -117,7 +117,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [0] *BG_COLOR = WHITE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *RASTER = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -148,7 +148,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -182,9 +182,9 @@ irq: {
main: {
// asm { sei }
sei
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
@ -226,7 +226,7 @@ FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273
@ -257,7 +257,7 @@ Score: 98
.const IRQ_RASTER = 1
.const WHITE = 1
.const BLACK = 0
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -294,10 +294,10 @@ main: {
// asm
// asm { sei }
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [5] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 |=$80
// [6] *VICII_CONTROL1 = *VICII_CONTROL1 | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2

View File

@ -1,7 +1,7 @@
__constant char * const BG_COLOR = (char *) 53280
__constant const char BLACK = 0
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273

View File

@ -9,7 +9,7 @@
.segment Basic
:BasicUpstart(main)
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -35,9 +35,9 @@ irq: {
main: {
// asm
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 &=$7f
// Set raster line to $0fd

View File

@ -18,7 +18,7 @@ irq::@return: scope:[irq] from irq::@1
void main()
main: scope:[main] from
asm { sei }
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[9] *RASTER = $fd
[10] *IRQ_ENABLE = IRQ_RASTER

View File

@ -7,7 +7,7 @@ CONTROL FLOW GRAPH SSA
void main()
main: scope:[main] from __start::@1
asm { sei }
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
*VICII_CONTROL1 = *VICII_CONTROL1 & $7f
*RASTER = $fd
*IRQ_ENABLE = IRQ_RASTER
@ -62,7 +62,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant char * const BG_COLOR = (char *)$d020
__constant char * const CIA1_INTERRUPT = (char *)$dc0d
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *)$d01a
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *)$d019
@ -161,7 +161,7 @@ irq::@return: scope:[irq] from irq::@1
void main()
main: scope:[main] from
asm { sei }
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
[7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
[8] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f
[9] *RASTER = $fd
[10] *IRQ_ENABLE = IRQ_RASTER
@ -185,7 +185,7 @@ Complete equivalence classes
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] if(*RASTER<$32+1) goto irq::@1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *RASTER = $fd [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *IRQ_ENABLE = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
@ -216,7 +216,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(main)
// Global Constants & labels
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -258,9 +258,9 @@ irq: {
main: {
// asm { sei }
sei
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// Set raster line to $0fd
@ -320,7 +320,7 @@ Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
__constant char * const BG_COLOR = (char *) 53280
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273
@ -349,7 +349,7 @@ Score: 978
:BasicUpstart(main)
// Global Constants & labels
.const IRQ_RASTER = 1
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
.label KERNEL_IRQ = $314
.label RASTER = $d012
.label VICII_CONTROL1 = $d011
@ -389,10 +389,10 @@ main: {
// asm
// asm { sei }
sei
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
// *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [7] *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1_INTERRUPT
// *VICII_CONTROL1 &=$7f
// [8] *VICII_CONTROL1 = *VICII_CONTROL1 & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2

View File

@ -1,6 +1,6 @@
__constant char * const BG_COLOR = (char *) 53280
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const IRQ_ENABLE = (char *) 53274
__constant const char IRQ_RASTER = 1
__constant char * const IRQ_STATUS = (char *) 53273

View File

@ -14,7 +14,7 @@
.segment Basic
:BasicUpstart(__start)
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
.const VICII_DEN = $10
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
@ -312,8 +312,8 @@ init: {
// asm
// enable the interrupt
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
lda #CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *IRQ_ENABLE = IRQ_RASTER
lda #IRQ_RASTER

View File

@ -139,7 +139,7 @@ init::@3: scope:[init] from init::@2 init::@3
to:init::@4
init::@4: scope:[init] from init::@3
asm { sei }
[71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[72] *IRQ_ENABLE = IRQ_RASTER
[73] *IRQ_STATUS = IRQ_RASTER
[74] *KERNEL_IRQ = &plex_irq

View File

@ -199,7 +199,7 @@ init::@3: scope:[init] from init::@2 init::@3
to:init::@4
init::@4: scope:[init] from init::@3
asm { sei }
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
*IRQ_ENABLE = IRQ_RASTER
*IRQ_STATUS = IRQ_RASTER
*KERNEL_IRQ = &plex_irq
@ -328,7 +328,7 @@ __start::@return: scope:[__start] from __start::@2
SYMBOL TABLE SSA
__constant char * const BORDER_COLOR = (char *)$d020
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *)$dc00
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *)$d011
__constant const char GREEN = 5
__constant char * const IRQ_ENABLE = (char *)$d01a
@ -1038,7 +1038,7 @@ init::@3: scope:[init] from init::@2 init::@3
to:init::@4
init::@4: scope:[init] from init::@3
asm { sei }
[71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL
[72] *IRQ_ENABLE = IRQ_RASTER
[73] *IRQ_STATUS = IRQ_RASTER
[74] *KERNEL_IRQ = &plex_irq
@ -1370,7 +1370,7 @@ Statement [62] init::xp#1 = init::xp#2 + 9 [ init::sx#2 init::xp#1 ] ( main:8::i
Statement [65] *SPRITES_ENABLE = $ff [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [67] SPRITES_COLOR[init::ss#2] = GREEN [ init::ss#2 ] ( main:8::init:27 [ framedone init::ss#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:11 [ init::ss#2 init::ss#1 ]
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [72] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [73] *IRQ_STATUS = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [74] *KERNEL_IRQ = &plex_irq [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
@ -1435,7 +1435,7 @@ Statement [61] PLEX_XPOS[init::$3] = init::xp#2 [ init::sx#2 init::xp#2 ] ( main
Statement [62] init::xp#1 = init::xp#2 + 9 [ init::sx#2 init::xp#1 ] ( main:8::init:27 [ framedone init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a
Statement [65] *SPRITES_ENABLE = $ff [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [67] SPRITES_COLOR[init::ss#2] = GREEN [ init::ss#2 ] ( main:8::init:27 [ framedone init::ss#2 ] { } ) always clobbers reg byte a
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [72] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [73] *IRQ_STATUS = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [74] *KERNEL_IRQ = &plex_irq [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
@ -1492,7 +1492,7 @@ Statement [61] PLEX_XPOS[init::$3] = init::xp#2 [ init::sx#2 init::xp#2 ] ( main
Statement [62] init::xp#1 = init::xp#2 + 9 [ init::sx#2 init::xp#1 ] ( main:8::init:27 [ framedone init::sx#2 init::xp#1 ] { } ) always clobbers reg byte a
Statement [65] *SPRITES_ENABLE = $ff [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [67] SPRITES_COLOR[init::ss#2] = GREEN [ init::ss#2 ] ( main:8::init:27 [ framedone init::ss#2 ] { } ) always clobbers reg byte a
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [72] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [73] *IRQ_STATUS = IRQ_RASTER [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
Statement [74] *KERNEL_IRQ = &plex_irq [ ] ( main:8::init:27 [ framedone ] { } ) always clobbers reg byte a
@ -1654,7 +1654,7 @@ ASSEMBLER BEFORE OPTIMIZATION
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
.const VICII_DEN = $10
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
@ -2058,8 +2058,8 @@ init: {
// asm { sei }
// enable the interrupt
sei
// [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR
// [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [72] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2
lda #IRQ_RASTER
@ -2487,7 +2487,7 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination
FINAL SYMBOL TABLE
__constant char * const BORDER_COLOR = (char *) 53280
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *) 53265
__constant const char GREEN = 5
__constant char * const IRQ_ENABLE = (char *) 53274
@ -2651,7 +2651,7 @@ Score: 43652
:BasicUpstart(__start)
// Global Constants & labels
/// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const CIA_INTERRUPT_CLEAR_ALL = $7f
/// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off
.const VICII_DEN = $10
/// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows
@ -3061,9 +3061,9 @@ init: {
// asm { sei }
// enable the interrupt
sei
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
// [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR_ALL
// [71] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR_ALL -- _deref_pbuc1=vbuc2
lda #CIA_INTERRUPT_CLEAR_ALL
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *IRQ_ENABLE = IRQ_RASTER
// [72] *IRQ_ENABLE = IRQ_RASTER -- _deref_pbuc1=vbuc2

View File

@ -1,6 +1,6 @@
__constant char * const BORDER_COLOR = (char *) 53280
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant const char CIA_INTERRUPT_CLEAR_ALL = $7f
__constant char * const D011 = (char *) 53265
__constant const char GREEN = 5
__constant char * const IRQ_ENABLE = (char *) 53274