1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-03 07:29:37 +00:00
kickc/src/test/ref/examples/mega65/banked-music.cfg
2024-01-02 19:21:16 +01:00

126 lines
5.7 KiB
INI

__interrupt(hardware_clobber) void irq()
irq: scope:[irq] from
[0] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER
[1] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
[2] call memoryRemapBlock
to:irq::@4
irq::@4: scope:[irq] from irq
[3] phi()
[4] callexecute *musicPlay
to:irq::@1
irq::@1: scope:[irq] from irq::@4
[5] phi()
[6] call memoryRemap
to:irq::@5
irq::@5: scope:[irq] from irq::@1
[7] irq::raster#0 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)
to:irq::@2
irq::@2: scope:[irq] from irq::@2 irq::@5
[8] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)==irq::raster#0) goto irq::@2
to:irq::@3
irq::@3: scope:[irq] from irq::@2
[9] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
to:irq::@return
irq::@return: scope:[irq] from irq::@3
[10] return
to:@return
void main()
main: scope:[main] from
asm { sei }
[12] call memoryRemap
to:main::@5
main::@5: scope:[main] from main
[13] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_KEY) = $47
[14] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_KEY) = $53
[15] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
[16] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
[17] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[18] *PROCPORT = PROCPORT_RAM_IO
[19] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 1
[20] call memcpy_dma4
to:main::@6
main::@6: scope:[main] from main::@5
[21] phi()
[22] call memoryRemapBlock
to:main::@7
main::@7: scope:[main] from main::@6
asm { lda#0 }
[24] callexecute *musicInit
to:main::@1
main::@1: scope:[main] from main::@7
[25] phi()
[26] call memoryRemap
to:main::@8
main::@8: scope:[main] from main::@1
[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
[31] *HARDWARE_IRQ = &irq
asm { cli }
to:main::@2
main::@2: scope:[main] from main::@3 main::@8
[33] main::mem_destroy_i#2 = phi( main::@3/main::mem_destroy_i#1, main::@8/0 )
[34] MUSIC[main::mem_destroy_i#2] = ++ MUSIC[main::mem_destroy_i#2]
[35] main::mem_destroy_i#1 = ++ main::mem_destroy_i#2
to:main::@3
main::@3: scope:[main] from main::@2 main::@4
[36] main::i#2 = phi( main::@2/0, main::@4/main::i#1 )
[37] if(main::i#2<$f0) goto main::@4
to:main::@2
main::@4: scope:[main] from main::@3
[38] DEFAULT_SCREEN[main::i#2] = MUSIC[main::i#2]
[39] main::i#1 = ++ main::i#2
to:main::@3
void memoryRemapBlock(char blockPage , unsigned int memoryPage)
memoryRemapBlock: scope:[memoryRemapBlock] from irq main::@6
[40] phi()
[41] call memoryRemap
to:memoryRemapBlock::@return
memoryRemapBlock::@return: scope:[memoryRemapBlock] from memoryRemapBlock
[42] return
to:@return
void memoryRemap(char remapBlocks , unsigned int lowerPageOffset , unsigned int upperPageOffset)
memoryRemap: scope:[memoryRemap] from irq::@1 main main::@1 memoryRemapBlock
[43] memoryRemap::upperPageOffset#4 = phi( irq::@1/0, main/0, main::@1/0, memoryRemapBlock/memoryRemapBlock::pageOffset#0 )
[43] memoryRemap::remapBlocks#4 = phi( irq::@1/0, main/0, main::@1/0, memoryRemapBlock/memoryRemapBlock::blockBits#0 )
[43] memoryRemap::lowerPageOffset#4 = phi( irq::@1/0, main/0, main::@1/0, memoryRemapBlock/memoryRemapBlock::pageOffset#0 )
[44] memoryRemap::aVal = byte0 memoryRemap::lowerPageOffset#4
[45] memoryRemap::$1 = memoryRemap::remapBlocks#4 << 4
[46] memoryRemap::$2 = byte1 memoryRemap::lowerPageOffset#4
[47] memoryRemap::$3 = memoryRemap::$2 & $f
[48] memoryRemap::xVal = memoryRemap::$1 | memoryRemap::$3
[49] memoryRemap::yVal = byte0 memoryRemap::upperPageOffset#4
[50] memoryRemap::$6 = memoryRemap::remapBlocks#4 & $f0
[51] memoryRemap::$7 = byte1 memoryRemap::upperPageOffset#4
[52] memoryRemap::$8 = memoryRemap::$7 & $f
[53] memoryRemap::zVal = memoryRemap::$6 | memoryRemap::$8
asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom }
to:memoryRemap::@return
memoryRemap::@return: scope:[memoryRemap] from memoryRemap
[55] return
to:@return
void memcpy_dma4(char dest_bank , void *dest , char src_bank , void *src , unsigned int num)
memcpy_dma4: scope:[memcpy_dma4] from main::@5
[56] memcpy_dma4::dmaMode#0 = *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_EN018B)
[57] *((unsigned int *)&memcpy_dma_command4+OFFSET_STRUCT_DMA_LIST_F018B_COUNT) = memcpy_dma4::num#0
[58] *((char *)&memcpy_dma_command4+OFFSET_STRUCT_DMA_LIST_F018B_SRC_BANK) = memcpy_dma4::src_bank#0
[59] *((char **)&memcpy_dma_command4+OFFSET_STRUCT_DMA_LIST_F018B_SRC) = (char *)memcpy_dma4::src#0
[60] *((char *)&memcpy_dma_command4+OFFSET_STRUCT_DMA_LIST_F018B_DEST_BANK) = memcpy_dma4::dest_bank#0
[61] *((char **)&memcpy_dma_command4+OFFSET_STRUCT_DMA_LIST_F018B_DEST) = (char *)memcpy_dma4::dest#0
[62] *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_EN018B) = 1
[63] *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRMB) = 0
[64] *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRBANK) = 0
[65] *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_ADDRMSB) = byte1 &memcpy_dma_command4
[66] *((char *)DMA) = byte0 &memcpy_dma_command4
[67] *((char *)DMA+OFFSET_STRUCT_F018_DMAGIC_EN018B) = memcpy_dma4::dmaMode#0
to:memcpy_dma4::@return
memcpy_dma4::@return: scope:[memcpy_dma4] from memcpy_dma4
[68] return
to:@return