Resolved forward reference PALETTE to PALETTE
Resolved forward reference PALETTE to PALETTE
Resolved forward reference x_scroll to x_scroll
Resolved forward reference y_scroll to y_scroll
Fixing struct type size struct printf_buffer_number to 12
Fixing struct type size struct printf_buffer_number to 12
Fixing struct type size struct printf_buffer_number to 12
Fixing struct type SIZE_OF struct printf_buffer_number to 12
Fixing struct type SIZE_OF struct printf_buffer_number to 12
Inlined call call disableVideoOutput
Inlined call call disableAudioOutput
Inlined call call clearVBlankFlag
Inlined call call waitForVBlank
Inlined call call waitForVBlank
Inlined call call ppuDataPrepare(ppuDataFill::ppuData)
Inlined call call ppuDataPut(ppuDataFill::val)
Inlined call call ppuDataPrepare(ppuDataTransfer::ppuData)
Inlined call call ppuDataPut(*ppuDataTransfer::cpuSrc)
Inlined call call ppuDataPrepare(ppuDataFetch::ppuData)
Inlined call ppuDataFetch::$2 = call ppuDataRead
Inlined call call ppuDataPrepare(ppuDataPutTile::ppuData)
Inlined call call ppuDataPut(ppuDataPutTile::tile[0])
Inlined call call ppuDataPut(ppuDataPutTile::tile[1])
Inlined call call ppuDataPrepare((void * const )ppuDataPutTile::$3)
Inlined call call ppuDataPut(ppuDataPutTile::tile[2])
Inlined call call ppuDataPut(ppuDataPutTile::tile[3])
Inlined call call ppuDataPrepare(ppuDataSet::ppuData)
Inlined call call ppuDataPut(ppuDataSet::val)
Inlined call call ppuDataPrepare(ppuDataGet::ppuData)
Inlined call ppuDataGet::$1 = call ppuDataRead
Inlined call call initNES
Inlined call main::$7 = call screensizex
Inlined call main::$11 = call screensizey
Inlined call main::$14 = call screensizey
Inlined call main::$18 = call screensizex
Inlined call main::$21 = call screensizey
Inlined call call enableVideoOutput
Inlined call call __init
Eliminating unused variable with no statement gotoxy::$4
Eliminating unused variable with no statement printf_buffer
Eliminating unused variable with no statement vblank::$0

CONTROL FLOW GRAPH SSA

char readJoy1()
readJoy1: scope:[readJoy1]  from vblank
  readJoy1::$7 = (char *)APU
  readJoy1::$4 = readJoy1::$7 + OFFSET_STRUCT_RICOH_2A03_JOY1
  *readJoy1::$4 = 1
  readJoy1::$8 = (char *)APU
  readJoy1::$5 = readJoy1::$8 + OFFSET_STRUCT_RICOH_2A03_JOY1
  *readJoy1::$5 = 0
  readJoy1::joy#0 = 0
  readJoy1::i#0 = 0
  to:readJoy1::@1
readJoy1::@1: scope:[readJoy1]  from readJoy1 readJoy1::@2
  readJoy1::joy#4 = phi( readJoy1/readJoy1::joy#0, readJoy1::@2/readJoy1::joy#1 )
  readJoy1::i#2 = phi( readJoy1/readJoy1::i#0, readJoy1::@2/readJoy1::i#1 )
  readJoy1::$0 = readJoy1::i#2 < 8
  if(readJoy1::$0) goto readJoy1::@2
  to:readJoy1::@3
readJoy1::@2: scope:[readJoy1]  from readJoy1::@1
  readJoy1::i#3 = phi( readJoy1::@1/readJoy1::i#2 )
  readJoy1::joy#2 = phi( readJoy1::@1/readJoy1::joy#4 )
  readJoy1::$1 = readJoy1::joy#2 << 1
  readJoy1::$9 = (char *)APU
  readJoy1::$6 = readJoy1::$9 + OFFSET_STRUCT_RICOH_2A03_JOY1
  readJoy1::$2 = *readJoy1::$6 & 1
  readJoy1::$3 = readJoy1::$1 | readJoy1::$2
  readJoy1::joy#1 = readJoy1::$3
  readJoy1::i#1 = ++ readJoy1::i#3
  to:readJoy1::@1
readJoy1::@3: scope:[readJoy1]  from readJoy1::@1
  readJoy1::joy#3 = phi( readJoy1::@1/readJoy1::joy#4 )
  readJoy1::return#0 = readJoy1::joy#3
  to:readJoy1::@return
readJoy1::@return: scope:[readJoy1]  from readJoy1::@3
  readJoy1::return#3 = phi( readJoy1::@3/readJoy1::return#0 )
  readJoy1::return#1 = readJoy1::return#3
  return 
  to:@return

void ppuDataFill(void * const ppuData , char val , unsigned int size)
ppuDataFill: scope:[ppuDataFill]  from clrscr cscroll::@6 main::@14 main::@15
  ppuDataFill::val#10 = phi( clrscr/ppuDataFill::val#0, cscroll::@6/ppuDataFill::val#1, main::@14/ppuDataFill::val#2, main::@15/ppuDataFill::val#3 )
  ppuDataFill::size#9 = phi( clrscr/ppuDataFill::size#0, cscroll::@6/ppuDataFill::size#1, main::@14/ppuDataFill::size#2, main::@15/ppuDataFill::size#3 )
  ppuDataFill::ppuData#4 = phi( clrscr/ppuDataFill::ppuData#0, cscroll::@6/ppuDataFill::ppuData#1, main::@14/ppuDataFill::ppuData#2, main::@15/ppuDataFill::ppuData#3 )
  ppuDataFill::ppuDataPrepare1_ppuData#0 = ppuDataFill::ppuData#4
  to:ppuDataFill::ppuDataPrepare1
ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill]  from ppuDataFill
  ppuDataFill::val#8 = phi( ppuDataFill/ppuDataFill::val#10 )
  ppuDataFill::size#7 = phi( ppuDataFill/ppuDataFill::size#9 )
  ppuDataFill::ppuDataPrepare1_ppuData#1 = phi( ppuDataFill/ppuDataFill::ppuDataPrepare1_ppuData#0 )
  ppuDataFill::ppuDataPrepare1_$0 = byte1  ppuDataFill::ppuDataPrepare1_ppuData#1
  ppuDataFill::ppuDataPrepare1_$4 = (char *)PPU
  ppuDataFill::ppuDataPrepare1_$2 = ppuDataFill::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataFill::ppuDataPrepare1_$2 = ppuDataFill::ppuDataPrepare1_$0
  ppuDataFill::ppuDataPrepare1_$1 = byte0  ppuDataFill::ppuDataPrepare1_ppuData#1
  ppuDataFill::ppuDataPrepare1_$5 = (char *)PPU
  ppuDataFill::ppuDataPrepare1_$3 = ppuDataFill::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataFill::ppuDataPrepare1_$3 = ppuDataFill::ppuDataPrepare1_$1
  to:ppuDataFill::@3
ppuDataFill::@3: scope:[ppuDataFill]  from ppuDataFill::ppuDataPrepare1
  ppuDataFill::val#6 = phi( ppuDataFill::ppuDataPrepare1/ppuDataFill::val#8 )
  ppuDataFill::size#5 = phi( ppuDataFill::ppuDataPrepare1/ppuDataFill::size#7 )
  ppuDataFill::i#0 = 0
  to:ppuDataFill::@1
ppuDataFill::@1: scope:[ppuDataFill]  from ppuDataFill::@3 ppuDataFill::@4
  ppuDataFill::val#5 = phi( ppuDataFill::@3/ppuDataFill::val#6, ppuDataFill::@4/ppuDataFill::val#7 )
  ppuDataFill::size#4 = phi( ppuDataFill::@3/ppuDataFill::size#5, ppuDataFill::@4/ppuDataFill::size#6 )
  ppuDataFill::i#2 = phi( ppuDataFill::@3/ppuDataFill::i#0, ppuDataFill::@4/ppuDataFill::i#1 )
  ppuDataFill::$1 = ppuDataFill::i#2 < ppuDataFill::size#4
  if(ppuDataFill::$1) goto ppuDataFill::@2
  to:ppuDataFill::@return
ppuDataFill::@2: scope:[ppuDataFill]  from ppuDataFill::@1
  ppuDataFill::size#10 = phi( ppuDataFill::@1/ppuDataFill::size#4 )
  ppuDataFill::i#5 = phi( ppuDataFill::@1/ppuDataFill::i#2 )
  ppuDataFill::val#4 = phi( ppuDataFill::@1/ppuDataFill::val#5 )
  ppuDataFill::ppuDataPut1_val#0 = ppuDataFill::val#4
  to:ppuDataFill::ppuDataPut1
ppuDataFill::ppuDataPut1: scope:[ppuDataFill]  from ppuDataFill::@2
  ppuDataFill::val#9 = phi( ppuDataFill::@2/ppuDataFill::val#4 )
  ppuDataFill::size#8 = phi( ppuDataFill::@2/ppuDataFill::size#10 )
  ppuDataFill::i#4 = phi( ppuDataFill::@2/ppuDataFill::i#5 )
  ppuDataFill::ppuDataPut1_val#1 = phi( ppuDataFill::@2/ppuDataFill::ppuDataPut1_val#0 )
  ppuDataFill::ppuDataPut1_$1 = (char *)PPU
  ppuDataFill::ppuDataPut1_$0 = ppuDataFill::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
  *ppuDataFill::ppuDataPut1_$0 = ppuDataFill::ppuDataPut1_val#1
  to:ppuDataFill::@4
ppuDataFill::@4: scope:[ppuDataFill]  from ppuDataFill::ppuDataPut1
  ppuDataFill::val#7 = phi( ppuDataFill::ppuDataPut1/ppuDataFill::val#9 )
  ppuDataFill::size#6 = phi( ppuDataFill::ppuDataPut1/ppuDataFill::size#8 )
  ppuDataFill::i#3 = phi( ppuDataFill::ppuDataPut1/ppuDataFill::i#4 )
  ppuDataFill::i#1 = ++ ppuDataFill::i#3
  to:ppuDataFill::@1
ppuDataFill::@return: scope:[ppuDataFill]  from ppuDataFill::@1
  return 
  to:@return

void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
ppuDataTransfer: scope:[ppuDataTransfer]  from cscroll::@8 main::@8
  ppuDataTransfer::size#7 = phi( cscroll::@8/ppuDataTransfer::size#0, main::@8/ppuDataTransfer::size#1 )
  ppuDataTransfer::cpuData#4 = phi( cscroll::@8/ppuDataTransfer::cpuData#0, main::@8/ppuDataTransfer::cpuData#1 )
  ppuDataTransfer::ppuData#2 = phi( cscroll::@8/ppuDataTransfer::ppuData#0, main::@8/ppuDataTransfer::ppuData#1 )
  ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#2
  to:ppuDataTransfer::ppuDataPrepare1
ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer]  from ppuDataTransfer
  ppuDataTransfer::size#5 = phi( ppuDataTransfer/ppuDataTransfer::size#7 )
  ppuDataTransfer::cpuData#3 = phi( ppuDataTransfer/ppuDataTransfer::cpuData#4 )
  ppuDataTransfer::ppuDataPrepare1_ppuData#1 = phi( ppuDataTransfer/ppuDataTransfer::ppuDataPrepare1_ppuData#0 )
  ppuDataTransfer::ppuDataPrepare1_$0 = byte1  ppuDataTransfer::ppuDataPrepare1_ppuData#1
  ppuDataTransfer::ppuDataPrepare1_$4 = (char *)PPU
  ppuDataTransfer::ppuDataPrepare1_$2 = ppuDataTransfer::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataTransfer::ppuDataPrepare1_$2 = ppuDataTransfer::ppuDataPrepare1_$0
  ppuDataTransfer::ppuDataPrepare1_$1 = byte0  ppuDataTransfer::ppuDataPrepare1_ppuData#1
  ppuDataTransfer::ppuDataPrepare1_$5 = (char *)PPU
  ppuDataTransfer::ppuDataPrepare1_$3 = ppuDataTransfer::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataTransfer::ppuDataPrepare1_$3 = ppuDataTransfer::ppuDataPrepare1_$1
  to:ppuDataTransfer::@3
ppuDataTransfer::@3: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPrepare1
  ppuDataTransfer::size#3 = phi( ppuDataTransfer::ppuDataPrepare1/ppuDataTransfer::size#5 )
  ppuDataTransfer::cpuData#2 = phi( ppuDataTransfer::ppuDataPrepare1/ppuDataTransfer::cpuData#3 )
  ppuDataTransfer::cpuSrc#0 = (char *)ppuDataTransfer::cpuData#2
  ppuDataTransfer::i#0 = 0
  to:ppuDataTransfer::@1
ppuDataTransfer::@1: scope:[ppuDataTransfer]  from ppuDataTransfer::@3 ppuDataTransfer::@4
  ppuDataTransfer::cpuSrc#4 = phi( ppuDataTransfer::@3/ppuDataTransfer::cpuSrc#0, ppuDataTransfer::@4/ppuDataTransfer::cpuSrc#1 )
  ppuDataTransfer::size#2 = phi( ppuDataTransfer::@3/ppuDataTransfer::size#3, ppuDataTransfer::@4/ppuDataTransfer::size#4 )
  ppuDataTransfer::i#2 = phi( ppuDataTransfer::@3/ppuDataTransfer::i#0, ppuDataTransfer::@4/ppuDataTransfer::i#1 )
  ppuDataTransfer::$1 = ppuDataTransfer::i#2 < ppuDataTransfer::size#2
  if(ppuDataTransfer::$1) goto ppuDataTransfer::@2
  to:ppuDataTransfer::@return
ppuDataTransfer::@2: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  ppuDataTransfer::size#8 = phi( ppuDataTransfer::@1/ppuDataTransfer::size#2 )
  ppuDataTransfer::i#5 = phi( ppuDataTransfer::@1/ppuDataTransfer::i#2 )
  ppuDataTransfer::cpuSrc#2 = phi( ppuDataTransfer::@1/ppuDataTransfer::cpuSrc#4 )
  ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2
  to:ppuDataTransfer::ppuDataPut1
ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer]  from ppuDataTransfer::@2
  ppuDataTransfer::size#6 = phi( ppuDataTransfer::@2/ppuDataTransfer::size#8 )
  ppuDataTransfer::i#4 = phi( ppuDataTransfer::@2/ppuDataTransfer::i#5 )
  ppuDataTransfer::cpuSrc#5 = phi( ppuDataTransfer::@2/ppuDataTransfer::cpuSrc#2 )
  ppuDataTransfer::ppuDataPut1_val#1 = phi( ppuDataTransfer::@2/ppuDataTransfer::ppuDataPut1_val#0 )
  ppuDataTransfer::ppuDataPut1_$1 = (char *)PPU
  ppuDataTransfer::ppuDataPut1_$0 = ppuDataTransfer::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
  *ppuDataTransfer::ppuDataPut1_$0 = ppuDataTransfer::ppuDataPut1_val#1
  to:ppuDataTransfer::@4
ppuDataTransfer::@4: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPut1
  ppuDataTransfer::size#4 = phi( ppuDataTransfer::ppuDataPut1/ppuDataTransfer::size#6 )
  ppuDataTransfer::i#3 = phi( ppuDataTransfer::ppuDataPut1/ppuDataTransfer::i#4 )
  ppuDataTransfer::cpuSrc#3 = phi( ppuDataTransfer::ppuDataPut1/ppuDataTransfer::cpuSrc#5 )
  ppuDataTransfer::cpuSrc#1 = ++ ppuDataTransfer::cpuSrc#3
  ppuDataTransfer::i#1 = ++ ppuDataTransfer::i#3
  to:ppuDataTransfer::@1
ppuDataTransfer::@return: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  return 
  to:@return

void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
ppuDataFetch: scope:[ppuDataFetch]  from cscroll::@5
  ppuDataFetch::size#6 = phi( cscroll::@5/ppuDataFetch::size#0 )
  ppuDataFetch::cpuData#3 = phi( cscroll::@5/ppuDataFetch::cpuData#0 )
  ppuDataFetch::ppuData#1 = phi( cscroll::@5/ppuDataFetch::ppuData#0 )
  ppuDataFetch::ppuDataPrepare1_ppuData#0 = ppuDataFetch::ppuData#1
  to:ppuDataFetch::ppuDataPrepare1
ppuDataFetch::ppuDataPrepare1: scope:[ppuDataFetch]  from ppuDataFetch
  ppuDataFetch::size#4 = phi( ppuDataFetch/ppuDataFetch::size#6 )
  ppuDataFetch::cpuData#2 = phi( ppuDataFetch/ppuDataFetch::cpuData#3 )
  ppuDataFetch::ppuDataPrepare1_ppuData#1 = phi( ppuDataFetch/ppuDataFetch::ppuDataPrepare1_ppuData#0 )
  ppuDataFetch::ppuDataPrepare1_$0 = byte1  ppuDataFetch::ppuDataPrepare1_ppuData#1
  ppuDataFetch::ppuDataPrepare1_$4 = (char *)PPU
  ppuDataFetch::ppuDataPrepare1_$2 = ppuDataFetch::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataFetch::ppuDataPrepare1_$2 = ppuDataFetch::ppuDataPrepare1_$0
  ppuDataFetch::ppuDataPrepare1_$1 = byte0  ppuDataFetch::ppuDataPrepare1_ppuData#1
  ppuDataFetch::ppuDataPrepare1_$5 = (char *)PPU
  ppuDataFetch::ppuDataPrepare1_$3 = ppuDataFetch::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataFetch::ppuDataPrepare1_$3 = ppuDataFetch::ppuDataPrepare1_$1
  to:ppuDataFetch::@2
ppuDataFetch::@2: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataPrepare1
  ppuDataFetch::size#2 = phi( ppuDataFetch::ppuDataPrepare1/ppuDataFetch::size#4 )
  ppuDataFetch::cpuData#1 = phi( ppuDataFetch::ppuDataPrepare1/ppuDataFetch::cpuData#2 )
  asm { ldaPPU_PPUDATA  }
  ppuDataFetch::cpuDst#0 = (char *)ppuDataFetch::cpuData#1
  ppuDataFetch::i#0 = 0
  to:ppuDataFetch::@1
ppuDataFetch::@1: scope:[ppuDataFetch]  from ppuDataFetch::@2 ppuDataFetch::@3
  ppuDataFetch::cpuDst#5 = phi( ppuDataFetch::@2/ppuDataFetch::cpuDst#0, ppuDataFetch::@3/ppuDataFetch::cpuDst#1 )
  ppuDataFetch::size#1 = phi( ppuDataFetch::@2/ppuDataFetch::size#2, ppuDataFetch::@3/ppuDataFetch::size#3 )
  ppuDataFetch::i#2 = phi( ppuDataFetch::@2/ppuDataFetch::i#0, ppuDataFetch::@3/ppuDataFetch::i#1 )
  ppuDataFetch::$1 = ppuDataFetch::i#2 < ppuDataFetch::size#1
  if(ppuDataFetch::$1) goto ppuDataFetch::ppuDataRead1
  to:ppuDataFetch::@return
ppuDataFetch::ppuDataRead1: scope:[ppuDataFetch]  from ppuDataFetch::@1
  ppuDataFetch::size#7 = phi( ppuDataFetch::@1/ppuDataFetch::size#1 )
  ppuDataFetch::i#5 = phi( ppuDataFetch::@1/ppuDataFetch::i#2 )
  ppuDataFetch::cpuDst#4 = phi( ppuDataFetch::@1/ppuDataFetch::cpuDst#5 )
  ppuDataFetch::ppuDataRead1_$1 = (char *)PPU
  ppuDataFetch::ppuDataRead1_$0 = ppuDataFetch::ppuDataRead1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
  ppuDataFetch::ppuDataRead1_return#0 = *ppuDataFetch::ppuDataRead1_$0
  to:ppuDataFetch::ppuDataRead1_@return
ppuDataFetch::ppuDataRead1_@return: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataRead1
  ppuDataFetch::size#5 = phi( ppuDataFetch::ppuDataRead1/ppuDataFetch::size#7 )
  ppuDataFetch::i#4 = phi( ppuDataFetch::ppuDataRead1/ppuDataFetch::i#5 )
  ppuDataFetch::cpuDst#3 = phi( ppuDataFetch::ppuDataRead1/ppuDataFetch::cpuDst#4 )
  ppuDataFetch::ppuDataRead1_return#2 = phi( ppuDataFetch::ppuDataRead1/ppuDataFetch::ppuDataRead1_return#0 )
  ppuDataFetch::ppuDataRead1_return#1 = ppuDataFetch::ppuDataRead1_return#2
  to:ppuDataFetch::@3
ppuDataFetch::@3: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataRead1_@return
  ppuDataFetch::size#3 = phi( ppuDataFetch::ppuDataRead1_@return/ppuDataFetch::size#5 )
  ppuDataFetch::i#3 = phi( ppuDataFetch::ppuDataRead1_@return/ppuDataFetch::i#4 )
  ppuDataFetch::cpuDst#2 = phi( ppuDataFetch::ppuDataRead1_@return/ppuDataFetch::cpuDst#3 )
  ppuDataFetch::ppuDataRead1_return#3 = phi( ppuDataFetch::ppuDataRead1_@return/ppuDataFetch::ppuDataRead1_return#1 )
  ppuDataFetch::$2 = ppuDataFetch::ppuDataRead1_return#3
  *ppuDataFetch::cpuDst#2 = ppuDataFetch::$2
  ppuDataFetch::cpuDst#1 = ++ ppuDataFetch::cpuDst#2
  ppuDataFetch::i#1 = ++ ppuDataFetch::i#3
  to:ppuDataFetch::@1
ppuDataFetch::@return: scope:[ppuDataFetch]  from ppuDataFetch::@1
  return 
  to:@return

void ppuDataSet(void * const ppuData , char val)
ppuDataSet: scope:[ppuDataSet]  from cputc::@2
  ppuDataSet::val#3 = phi( cputc::@2/ppuDataSet::val#0 )
  ppuDataSet::ppuData#1 = phi( cputc::@2/ppuDataSet::ppuData#0 )
  ppuDataSet::ppuDataPrepare1_ppuData#0 = ppuDataSet::ppuData#1
  to:ppuDataSet::ppuDataPrepare1
ppuDataSet::ppuDataPrepare1: scope:[ppuDataSet]  from ppuDataSet
  ppuDataSet::val#2 = phi( ppuDataSet/ppuDataSet::val#3 )
  ppuDataSet::ppuDataPrepare1_ppuData#1 = phi( ppuDataSet/ppuDataSet::ppuDataPrepare1_ppuData#0 )
  ppuDataSet::ppuDataPrepare1_$0 = byte1  ppuDataSet::ppuDataPrepare1_ppuData#1
  ppuDataSet::ppuDataPrepare1_$4 = (char *)PPU
  ppuDataSet::ppuDataPrepare1_$2 = ppuDataSet::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataSet::ppuDataPrepare1_$2 = ppuDataSet::ppuDataPrepare1_$0
  ppuDataSet::ppuDataPrepare1_$1 = byte0  ppuDataSet::ppuDataPrepare1_ppuData#1
  ppuDataSet::ppuDataPrepare1_$5 = (char *)PPU
  ppuDataSet::ppuDataPrepare1_$3 = ppuDataSet::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
  *ppuDataSet::ppuDataPrepare1_$3 = ppuDataSet::ppuDataPrepare1_$1
  to:ppuDataSet::@1
ppuDataSet::@1: scope:[ppuDataSet]  from ppuDataSet::ppuDataPrepare1
  ppuDataSet::val#1 = phi( ppuDataSet::ppuDataPrepare1/ppuDataSet::val#2 )
  ppuDataSet::ppuDataPut1_val#0 = ppuDataSet::val#1
  to:ppuDataSet::ppuDataPut1
ppuDataSet::ppuDataPut1: scope:[ppuDataSet]  from ppuDataSet::@1
  ppuDataSet::ppuDataPut1_val#1 = phi( ppuDataSet::@1/ppuDataSet::ppuDataPut1_val#0 )
  ppuDataSet::ppuDataPut1_$1 = (char *)PPU
  ppuDataSet::ppuDataPut1_$0 = ppuDataSet::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
  *ppuDataSet::ppuDataPut1_$0 = ppuDataSet::ppuDataPut1_val#1
  to:ppuDataSet::@return
ppuDataSet::@return: scope:[ppuDataSet]  from ppuDataSet::ppuDataPut1
  return 
  to:@return

void clrscr()
clrscr: scope:[clrscr]  from main::@16
  ppuDataFill::ppuData#0 = (void * const )CONIO_SCREEN_TEXT
  ppuDataFill::val#0 = ' '
  ppuDataFill::size#0 = $3c0
  call ppuDataFill
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr
  conio_cursor_x = 0
  conio_cursor_y = 0
  conio_line_text = CONIO_SCREEN_TEXT
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@1
  return 
  to:@return

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from cputcxy cputsxy cscroll::@2
  gotoxy::x#6 = phi( cputcxy/gotoxy::x#1, cputsxy/gotoxy::x#2, cscroll::@2/gotoxy::x#3 )
  gotoxy::y#4 = phi( cputcxy/gotoxy::y#1, cputsxy/gotoxy::y#2, cscroll::@2/gotoxy::y#3 )
  gotoxy::$0 = gotoxy::y#4 > $1e
  gotoxy::$1 = ! gotoxy::$0
  if(gotoxy::$1) goto gotoxy::@1
  to:gotoxy::@3
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  gotoxy::y#6 = phi( gotoxy/gotoxy::y#4, gotoxy::@3/gotoxy::y#0 )
  gotoxy::x#4 = phi( gotoxy/gotoxy::x#6, gotoxy::@3/gotoxy::x#7 )
  gotoxy::$2 = gotoxy::x#4 >= $20
  gotoxy::$3 = ! gotoxy::$2
  if(gotoxy::$3) goto gotoxy::@2
  to:gotoxy::@4
gotoxy::@3: scope:[gotoxy]  from gotoxy
  gotoxy::x#7 = phi( gotoxy/gotoxy::x#6 )
  gotoxy::y#0 = 0
  to:gotoxy::@1
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1 gotoxy::@4
  gotoxy::y#5 = phi( gotoxy::@1/gotoxy::y#6, gotoxy::@4/gotoxy::y#7 )
  gotoxy::x#5 = phi( gotoxy::@1/gotoxy::x#4, gotoxy::@4/gotoxy::x#0 )
  conio_cursor_x = gotoxy::x#5
  conio_cursor_y = gotoxy::y#5
  gotoxy::$6 = (unsigned int)gotoxy::y#5
  gotoxy::line_offset#0 = gotoxy::$6 * $20
  gotoxy::$5 = CONIO_SCREEN_TEXT + gotoxy::line_offset#0
  conio_line_text = gotoxy::$5
  to:gotoxy::@return
gotoxy::@4: scope:[gotoxy]  from gotoxy::@1
  gotoxy::y#7 = phi( gotoxy::@1/gotoxy::y#6 )
  gotoxy::x#0 = 0
  to:gotoxy::@2
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  return 
  to:@return

void cputc(char c)
cputc: scope:[cputc]  from cputcxy::@1 cputs::@2
  cputc::c#2 = phi( cputcxy::@1/cputc::c#0, cputs::@2/cputc::c#1 )
  cputc::$0 = cputc::c#2 == '
'
  if(cputc::$0) goto cputc::@1
  to:cputc::@2
cputc::@1: scope:[cputc]  from cputc
  call cputln
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@1
  to:cputc::@return
cputc::@2: scope:[cputc]  from cputc
  cputc::c#3 = phi( cputc/cputc::c#2 )
  cputc::$1 = conio_line_text + conio_cursor_x
  ppuDataSet::ppuData#0 = (void * const )cputc::$1
  ppuDataSet::val#0 = cputc::c#3
  call ppuDataSet
  to:cputc::@5
cputc::@5: scope:[cputc]  from cputc::@2
  conio_cursor_x = ++ conio_cursor_x
  cputc::$3 = conio_cursor_x == $20
  cputc::$4 = ! cputc::$3
  if(cputc::$4) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@5
  call cputln
  to:cputc::@6
cputc::@6: scope:[cputc]  from cputc::@3
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@4 cputc::@5 cputc::@6
  return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  conio_line_text = conio_line_text + $20
  conio_cursor_x = 0
  conio_cursor_y = ++ conio_cursor_y
  call cscroll
  to:cputln::@1
cputln::@1: scope:[cputln]  from cputln
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln::@1
  return 
  to:@return

void cputcxy(char x , char y , char c)
cputcxy: scope:[cputcxy]  from main::@1 main::@10 main::@12 main::@3
  cputcxy::c#5 = phi( main::@1/cputcxy::c#0, main::@10/cputcxy::c#1, main::@12/cputcxy::c#3, main::@3/cputcxy::c#2 )
  cputcxy::y#4 = phi( main::@1/cputcxy::y#0, main::@10/cputcxy::y#1, main::@12/cputcxy::y#3, main::@3/cputcxy::y#2 )
  cputcxy::x#4 = phi( main::@1/cputcxy::x#0, main::@10/cputcxy::x#1, main::@12/cputcxy::x#3, main::@3/cputcxy::x#2 )
  gotoxy::x#1 = cputcxy::x#4
  gotoxy::y#1 = cputcxy::y#4
  call gotoxy
  to:cputcxy::@1
cputcxy::@1: scope:[cputcxy]  from cputcxy
  cputcxy::c#4 = phi( cputcxy/cputcxy::c#5 )
  cputc::c#0 = cputcxy::c#4
  call cputc
  to:cputcxy::@2
cputcxy::@2: scope:[cputcxy]  from cputcxy::@1
  to:cputcxy::@return
cputcxy::@return: scope:[cputcxy]  from cputcxy::@2
  return 
  to:@return

void cputs(const char *s)
cputs: scope:[cputs]  from cputsxy::@1
  cputs::s#3 = phi( cputsxy::@1/cputs::s#1 )
  cputs::c#0 = 0
  to:cputs::@1
cputs::@1: scope:[cputs]  from cputs cputs::@3
  cputs::s#2 = phi( cputs/cputs::s#3, cputs::@3/cputs::s#4 )
  cputs::c#1 = *cputs::s#2
  cputs::$0 = cputs::c#1
  cputs::s#0 = ++ cputs::s#2
  cputs::$2 = 0 != cputs::$0
  if(cputs::$2) goto cputs::@2
  to:cputs::@return
cputs::@2: scope:[cputs]  from cputs::@1
  cputs::s#5 = phi( cputs::@1/cputs::s#0 )
  cputs::c#2 = phi( cputs::@1/cputs::c#1 )
  cputc::c#1 = cputs::c#2
  call cputc
  to:cputs::@3
cputs::@3: scope:[cputs]  from cputs::@2
  cputs::s#4 = phi( cputs::@2/cputs::s#5 )
  to:cputs::@1
cputs::@return: scope:[cputs]  from cputs::@1
  return 
  to:@return

void cputsxy(char x , char y , const char *s)
cputsxy: scope:[cputsxy]  from main::@22
  cputsxy::s#2 = phi( main::@22/cputsxy::s#0 )
  cputsxy::y#1 = phi( main::@22/cputsxy::y#0 )
  cputsxy::x#1 = phi( main::@22/cputsxy::x#0 )
  gotoxy::x#2 = cputsxy::x#1
  gotoxy::y#2 = cputsxy::y#1
  call gotoxy
  to:cputsxy::@1
cputsxy::@1: scope:[cputsxy]  from cputsxy
  cputsxy::s#1 = phi( cputsxy/cputsxy::s#2 )
  cputs::s#1 = cputsxy::s#1
  call cputs
  to:cputsxy::@2
cputsxy::@2: scope:[cputsxy]  from cputsxy::@1
  to:cputsxy::@return
cputsxy::@return: scope:[cputsxy]  from cputsxy::@2
  return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  cscroll::$0 = conio_cursor_y == $1e
  cscroll::$1 = ! cscroll::$0
  if(cscroll::$1) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll
  cscroll::$7 = 0 != conio_scroll_enable
  if(cscroll::$7) goto cscroll::@3
  to:cscroll::@2
cscroll::@3: scope:[cscroll]  from cscroll::@1
  cscroll::line1#0 = CONIO_SCREEN_TEXT
  cscroll::line2#0 = CONIO_SCREEN_TEXT+$20
  cscroll::y#0 = 0
  to:cscroll::@4
cscroll::@2: scope:[cscroll]  from cscroll::@1
  gotoxy::x#3 = 0
  gotoxy::y#3 = 0
  call gotoxy
  to:cscroll::@7
cscroll::@7: scope:[cscroll]  from cscroll::@2
  to:cscroll::@return
cscroll::@4: scope:[cscroll]  from cscroll::@3 cscroll::@9
  cscroll::line1#5 = phi( cscroll::@3/cscroll::line1#0, cscroll::@9/cscroll::line1#1 )
  cscroll::line2#4 = phi( cscroll::@3/cscroll::line2#0, cscroll::@9/cscroll::line2#1 )
  cscroll::y#2 = phi( cscroll::@3/cscroll::y#0, cscroll::@9/cscroll::y#1 )
  cscroll::$3 = cscroll::y#2 < $1e-1
  if(cscroll::$3) goto cscroll::@5
  to:cscroll::@6
cscroll::@5: scope:[cscroll]  from cscroll::@4
  cscroll::y#5 = phi( cscroll::@4/cscroll::y#2 )
  cscroll::line1#4 = phi( cscroll::@4/cscroll::line1#5 )
  cscroll::line2#2 = phi( cscroll::@4/cscroll::line2#4 )
  ppuDataFetch::cpuData#0 = (void * const )conio_cscroll_buffer
  ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2
  ppuDataFetch::size#0 = $20
  call ppuDataFetch
  to:cscroll::@8
cscroll::@8: scope:[cscroll]  from cscroll::@5
  cscroll::y#4 = phi( cscroll::@5/cscroll::y#5 )
  cscroll::line2#5 = phi( cscroll::@5/cscroll::line2#2 )
  cscroll::line1#2 = phi( cscroll::@5/cscroll::line1#4 )
  ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2
  ppuDataTransfer::cpuData#0 = (void * const )conio_cscroll_buffer
  ppuDataTransfer::size#0 = $20
  call ppuDataTransfer
  to:cscroll::@9
cscroll::@9: scope:[cscroll]  from cscroll::@8
  cscroll::y#3 = phi( cscroll::@8/cscroll::y#4 )
  cscroll::line2#3 = phi( cscroll::@8/cscroll::line2#5 )
  cscroll::line1#3 = phi( cscroll::@8/cscroll::line1#2 )
  cscroll::line1#1 = cscroll::line1#3 + $20
  cscroll::line2#1 = cscroll::line2#3 + $20
  cscroll::y#1 = ++ cscroll::y#3
  to:cscroll::@4
cscroll::@6: scope:[cscroll]  from cscroll::@4
  ppuDataFill::ppuData#1 = (void * const )CONIO_SCREEN_TEXT+$1e*$20-$20
  ppuDataFill::val#1 = ' '
  ppuDataFill::size#1 = $20
  call ppuDataFill
  to:cscroll::@10
cscroll::@10: scope:[cscroll]  from cscroll::@6
  conio_line_text = conio_line_text - $20
  conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@10 cscroll::@7
  return 
  to:@return

void uctoa(char value , char *buffer , char radix)
uctoa: scope:[uctoa]  from main::@5
  uctoa::buffer#21 = phi( main::@5/uctoa::buffer#5 )
  uctoa::value#12 = phi( main::@5/uctoa::value#1 )
  uctoa::radix#1 = phi( main::@5/uctoa::radix#0 )
  uctoa::max_digits#0 = 0
  uctoa::digit_values#0 = (char *) 0
  uctoa::$0 = uctoa::radix#1 == DECIMAL
  if(uctoa::$0) goto uctoa::@1
  to:uctoa::@6
uctoa::@1: scope:[uctoa]  from uctoa
  uctoa::buffer#17 = phi( uctoa/uctoa::buffer#21 )
  uctoa::value#8 = phi( uctoa/uctoa::value#12 )
  uctoa::max_digits#1 = 3
  uctoa::digit_values#1 = RADIX_DECIMAL_VALUES_CHAR
  to:uctoa::@5
uctoa::@6: scope:[uctoa]  from uctoa
  uctoa::value#13 = phi( uctoa/uctoa::value#12 )
  uctoa::buffer#16 = phi( uctoa/uctoa::buffer#21 )
  uctoa::radix#2 = phi( uctoa/uctoa::radix#1 )
  uctoa::$1 = uctoa::radix#2 == HEXADECIMAL
  if(uctoa::$1) goto uctoa::@2
  to:uctoa::@7
uctoa::@2: scope:[uctoa]  from uctoa::@6
  uctoa::buffer#18 = phi( uctoa::@6/uctoa::buffer#16 )
  uctoa::value#9 = phi( uctoa::@6/uctoa::value#13 )
  uctoa::max_digits#2 = 2
  uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
  to:uctoa::@5
uctoa::@7: scope:[uctoa]  from uctoa::@6
  uctoa::value#14 = phi( uctoa::@6/uctoa::value#13 )
  uctoa::buffer#13 = phi( uctoa::@6/uctoa::buffer#16 )
  uctoa::radix#3 = phi( uctoa::@6/uctoa::radix#2 )
  uctoa::$2 = uctoa::radix#3 == OCTAL
  if(uctoa::$2) goto uctoa::@3
  to:uctoa::@8
uctoa::@3: scope:[uctoa]  from uctoa::@7
  uctoa::buffer#19 = phi( uctoa::@7/uctoa::buffer#13 )
  uctoa::value#10 = phi( uctoa::@7/uctoa::value#14 )
  uctoa::max_digits#3 = 3
  uctoa::digit_values#3 = RADIX_OCTAL_VALUES_CHAR
  to:uctoa::@5
uctoa::@8: scope:[uctoa]  from uctoa::@7
  uctoa::value#15 = phi( uctoa::@7/uctoa::value#14 )
  uctoa::buffer#10 = phi( uctoa::@7/uctoa::buffer#13 )
  uctoa::radix#4 = phi( uctoa::@7/uctoa::radix#3 )
  uctoa::$3 = uctoa::radix#4 == BINARY
  if(uctoa::$3) goto uctoa::@4
  to:uctoa::@9
uctoa::@4: scope:[uctoa]  from uctoa::@8
  uctoa::buffer#20 = phi( uctoa::@8/uctoa::buffer#10 )
  uctoa::value#11 = phi( uctoa::@8/uctoa::value#15 )
  uctoa::max_digits#4 = 8
  uctoa::digit_values#4 = RADIX_BINARY_VALUES_CHAR
  to:uctoa::@5
uctoa::@9: scope:[uctoa]  from uctoa::@8
  uctoa::buffer#6 = phi( uctoa::@8/uctoa::buffer#10 )
  *uctoa::buffer#6 = 'e'
  uctoa::buffer#0 = ++ uctoa::buffer#6
  *uctoa::buffer#0 = 'r'
  uctoa::buffer#1 = ++ uctoa::buffer#0
  *uctoa::buffer#1 = 'r'
  uctoa::buffer#2 = ++ uctoa::buffer#1
  *uctoa::buffer#2 = 0
  to:uctoa::@return
uctoa::@return: scope:[uctoa]  from uctoa::@12 uctoa::@9
  return 
  to:@return
uctoa::@5: scope:[uctoa]  from uctoa::@1 uctoa::@2 uctoa::@3 uctoa::@4
  uctoa::buffer#15 = phi( uctoa::@1/uctoa::buffer#17, uctoa::@2/uctoa::buffer#18, uctoa::@3/uctoa::buffer#19, uctoa::@4/uctoa::buffer#20 )
  uctoa::value#7 = phi( uctoa::@1/uctoa::value#8, uctoa::@2/uctoa::value#9, uctoa::@3/uctoa::value#10, uctoa::@4/uctoa::value#11 )
  uctoa::digit_values#8 = phi( uctoa::@1/uctoa::digit_values#1, uctoa::@2/uctoa::digit_values#2, uctoa::@3/uctoa::digit_values#3, uctoa::@4/uctoa::digit_values#4 )
  uctoa::max_digits#7 = phi( uctoa::@1/uctoa::max_digits#1, uctoa::@2/uctoa::max_digits#2, uctoa::@3/uctoa::max_digits#3, uctoa::@4/uctoa::max_digits#4 )
  uctoa::started#0 = 0
  uctoa::digit#0 = 0
  to:uctoa::@10
uctoa::@10: scope:[uctoa]  from uctoa::@13 uctoa::@5
  uctoa::buffer#11 = phi( uctoa::@13/uctoa::buffer#14, uctoa::@5/uctoa::buffer#15 )
  uctoa::started#3 = phi( uctoa::@13/uctoa::started#4, uctoa::@5/uctoa::started#0 )
  uctoa::value#5 = phi( uctoa::@13/uctoa::value#6, uctoa::@5/uctoa::value#7 )
  uctoa::digit_values#6 = phi( uctoa::@13/uctoa::digit_values#7, uctoa::@5/uctoa::digit_values#8 )
  uctoa::digit#2 = phi( uctoa::@13/uctoa::digit#1, uctoa::@5/uctoa::digit#0 )
  uctoa::max_digits#5 = phi( uctoa::@13/uctoa::max_digits#6, uctoa::@5/uctoa::max_digits#7 )
  uctoa::$4 = uctoa::max_digits#5 - 1
  uctoa::$5 = uctoa::digit#2 < uctoa::$4
  if(uctoa::$5) goto uctoa::@11
  to:uctoa::@12
uctoa::@11: scope:[uctoa]  from uctoa::@10
  uctoa::max_digits#8 = phi( uctoa::@10/uctoa::max_digits#5 )
  uctoa::buffer#12 = phi( uctoa::@10/uctoa::buffer#11 )
  uctoa::started#2 = phi( uctoa::@10/uctoa::started#3 )
  uctoa::value#2 = phi( uctoa::@10/uctoa::value#5 )
  uctoa::digit#3 = phi( uctoa::@10/uctoa::digit#2 )
  uctoa::digit_values#5 = phi( uctoa::@10/uctoa::digit_values#6 )
  uctoa::digit_value#0 = uctoa::digit_values#5[uctoa::digit#3]
  uctoa::$6 = uctoa::value#2 >= uctoa::digit_value#0
  uctoa::$7 = uctoa::started#2 || uctoa::$6
  uctoa::$8 = ! uctoa::$7
  if(uctoa::$8) goto uctoa::@13
  to:uctoa::@14
uctoa::@12: scope:[uctoa]  from uctoa::@10
  uctoa::buffer#7 = phi( uctoa::@10/uctoa::buffer#11 )
  uctoa::value#3 = phi( uctoa::@10/uctoa::value#5 )
  uctoa::$10 = (char)uctoa::value#3
  *uctoa::buffer#7 = DIGITS[uctoa::$10]
  uctoa::buffer#3 = ++ uctoa::buffer#7
  *uctoa::buffer#3 = 0
  to:uctoa::@return
uctoa::@13: scope:[uctoa]  from uctoa::@11 uctoa::@15
  uctoa::buffer#14 = phi( uctoa::@11/uctoa::buffer#12, uctoa::@15/uctoa::buffer#4 )
  uctoa::started#4 = phi( uctoa::@11/uctoa::started#2, uctoa::@15/uctoa::started#1 )
  uctoa::value#6 = phi( uctoa::@11/uctoa::value#2, uctoa::@15/uctoa::value#0 )
  uctoa::digit_values#7 = phi( uctoa::@11/uctoa::digit_values#5, uctoa::@15/uctoa::digit_values#9 )
  uctoa::max_digits#6 = phi( uctoa::@11/uctoa::max_digits#8, uctoa::@15/uctoa::max_digits#9 )
  uctoa::digit#4 = phi( uctoa::@11/uctoa::digit#3, uctoa::@15/uctoa::digit#5 )
  uctoa::digit#1 = ++ uctoa::digit#4
  to:uctoa::@10
uctoa::@14: scope:[uctoa]  from uctoa::@11
  uctoa::digit_values#10 = phi( uctoa::@11/uctoa::digit_values#5 )
  uctoa::max_digits#10 = phi( uctoa::@11/uctoa::max_digits#8 )
  uctoa::digit#6 = phi( uctoa::@11/uctoa::digit#3 )
  uctoa::digit_value#1 = phi( uctoa::@11/uctoa::digit_value#0 )
  uctoa::value#4 = phi( uctoa::@11/uctoa::value#2 )
  uctoa::buffer#8 = phi( uctoa::@11/uctoa::buffer#12 )
  uctoa_append::buffer#0 = uctoa::buffer#8
  uctoa_append::value#0 = uctoa::value#4
  uctoa_append::sub#0 = uctoa::digit_value#1
  call uctoa_append
  uctoa_append::return#0 = uctoa_append::return#2
  to:uctoa::@15
uctoa::@15: scope:[uctoa]  from uctoa::@14
  uctoa::digit_values#9 = phi( uctoa::@14/uctoa::digit_values#10 )
  uctoa::max_digits#9 = phi( uctoa::@14/uctoa::max_digits#10 )
  uctoa::digit#5 = phi( uctoa::@14/uctoa::digit#6 )
  uctoa::buffer#9 = phi( uctoa::@14/uctoa::buffer#8 )
  uctoa_append::return#3 = phi( uctoa::@14/uctoa_append::return#0 )
  uctoa::$9 = uctoa_append::return#3
  uctoa::value#0 = uctoa::$9
  uctoa::buffer#4 = ++ uctoa::buffer#9
  uctoa::started#1 = 1
  to:uctoa::@13

char uctoa_append(char *buffer , char value , char sub)
uctoa_append: scope:[uctoa_append]  from uctoa::@14
  uctoa_append::buffer#3 = phi( uctoa::@14/uctoa_append::buffer#0 )
  uctoa_append::sub#3 = phi( uctoa::@14/uctoa_append::sub#0 )
  uctoa_append::value#5 = phi( uctoa::@14/uctoa_append::value#0 )
  uctoa_append::digit#0 = 0
  to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append]  from uctoa_append uctoa_append::@2
  uctoa_append::buffer#2 = phi( uctoa_append/uctoa_append::buffer#3, uctoa_append::@2/uctoa_append::buffer#4 )
  uctoa_append::digit#4 = phi( uctoa_append/uctoa_append::digit#0, uctoa_append::@2/uctoa_append::digit#1 )
  uctoa_append::sub#1 = phi( uctoa_append/uctoa_append::sub#3, uctoa_append::@2/uctoa_append::sub#2 )
  uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#5, uctoa_append::@2/uctoa_append::value#1 )
  uctoa_append::$0 = uctoa_append::value#2 >= uctoa_append::sub#1
  if(uctoa_append::$0) goto uctoa_append::@2
  to:uctoa_append::@3
uctoa_append::@2: scope:[uctoa_append]  from uctoa_append::@1
  uctoa_append::buffer#4 = phi( uctoa_append::@1/uctoa_append::buffer#2 )
  uctoa_append::sub#2 = phi( uctoa_append::@1/uctoa_append::sub#1 )
  uctoa_append::value#3 = phi( uctoa_append::@1/uctoa_append::value#2 )
  uctoa_append::digit#2 = phi( uctoa_append::@1/uctoa_append::digit#4 )
  uctoa_append::digit#1 = ++ uctoa_append::digit#2
  uctoa_append::value#1 = uctoa_append::value#3 - uctoa_append::sub#2
  to:uctoa_append::@1
uctoa_append::@3: scope:[uctoa_append]  from uctoa_append::@1
  uctoa_append::value#4 = phi( uctoa_append::@1/uctoa_append::value#2 )
  uctoa_append::buffer#1 = phi( uctoa_append::@1/uctoa_append::buffer#2 )
  uctoa_append::digit#3 = phi( uctoa_append::@1/uctoa_append::digit#4 )
  *uctoa_append::buffer#1 = DIGITS[uctoa_append::digit#3]
  uctoa_append::return#1 = uctoa_append::value#4
  to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append]  from uctoa_append::@3
  uctoa_append::return#4 = phi( uctoa_append::@3/uctoa_append::return#1 )
  uctoa_append::return#2 = uctoa_append::return#4
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  to:main::initNES1
main::initNES1: scope:[main]  from main
  asm { cld ldx#$ff txs  }
  to:main::initNES1_disableVideoOutput1
main::initNES1_disableVideoOutput1: scope:[main]  from main::initNES1
  main::initNES1_disableVideoOutput1_$2 = (char *)PPU
  main::initNES1_disableVideoOutput1_$0 = main::initNES1_disableVideoOutput1_$2 + OFFSET_STRUCT_RICOH_2C02_PPUCTRL
  *main::initNES1_disableVideoOutput1_$0 = 0
  main::initNES1_disableVideoOutput1_$3 = (char *)PPU
  main::initNES1_disableVideoOutput1_$1 = main::initNES1_disableVideoOutput1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUMASK
  *main::initNES1_disableVideoOutput1_$1 = 0
  to:main::initNES1_disableAudioOutput1
main::initNES1_disableAudioOutput1: scope:[main]  from main::initNES1_disableVideoOutput1
  *FR_COUNTER = $40
  main::initNES1_disableAudioOutput1_$1 = (char *)APU
  main::initNES1_disableAudioOutput1_$0 = main::initNES1_disableAudioOutput1_$1 + OFFSET_STRUCT_RICOH_2A03_DMC_FREQ
  *main::initNES1_disableAudioOutput1_$0 = $40
  to:main::initNES1_clearVBlankFlag1
main::initNES1_clearVBlankFlag1: scope:[main]  from main::initNES1_disableAudioOutput1
  asm { ldaPPU_PPUSTATUS  }
  to:main::initNES1_waitForVBlank1
main::initNES1_waitForVBlank1: scope:[main]  from main::initNES1_clearVBlankFlag1
  to:main::initNES1_waitForVBlank1_@1
main::initNES1_waitForVBlank1_@1: scope:[main]  from main::initNES1_waitForVBlank1 main::initNES1_waitForVBlank1_@1
  main::initNES1_waitForVBlank1_$3 = (volatile char *)PPU
  main::initNES1_waitForVBlank1_$2 = main::initNES1_waitForVBlank1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
  main::initNES1_waitForVBlank1_$0 = *main::initNES1_waitForVBlank1_$2 & $80
  main::initNES1_waitForVBlank1_$4 = 0 != main::initNES1_waitForVBlank1_$0
  main::initNES1_waitForVBlank1_$1 = ! main::initNES1_waitForVBlank1_$4
  if(main::initNES1_waitForVBlank1_$1) goto main::initNES1_waitForVBlank1_@1
  to:main::initNES1_@6
main::initNES1_@6: scope:[main]  from main::initNES1_waitForVBlank1_@1
  main::initNES1_i#0 = 0
  to:main::initNES1_@1
main::initNES1_@1: scope:[main]  from main::initNES1_@1 main::initNES1_@6
  main::initNES1_i#2 = phi( main::initNES1_@1/main::initNES1_i#1, main::initNES1_@6/main::initNES1_i#0 )
  (MEMORY+0)[main::initNES1_i#2] = 0
  (MEMORY+$100)[main::initNES1_i#2] = 0
  (MEMORY+$200)[main::initNES1_i#2] = 0
  (MEMORY+$300)[main::initNES1_i#2] = 0
  (MEMORY+$400)[main::initNES1_i#2] = 0
  (MEMORY+$500)[main::initNES1_i#2] = 0
  (MEMORY+$600)[main::initNES1_i#2] = 0
  (MEMORY+$700)[main::initNES1_i#2] = 0
  main::initNES1_i#1 = ++ main::initNES1_i#2
  main::initNES1_$5 = 0 != main::initNES1_i#1
  if(main::initNES1_$5) goto main::initNES1_@1
  to:main::initNES1_waitForVBlank2
main::initNES1_waitForVBlank2: scope:[main]  from main::initNES1_@1
  to:main::initNES1_waitForVBlank2_@1
main::initNES1_waitForVBlank2_@1: scope:[main]  from main::initNES1_waitForVBlank2 main::initNES1_waitForVBlank2_@1
  main::initNES1_waitForVBlank2_$3 = (volatile char *)PPU
  main::initNES1_waitForVBlank2_$2 = main::initNES1_waitForVBlank2_$3 + OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
  main::initNES1_waitForVBlank2_$0 = *main::initNES1_waitForVBlank2_$2 & $80
  main::initNES1_waitForVBlank2_$4 = 0 != main::initNES1_waitForVBlank2_$0
  main::initNES1_waitForVBlank2_$1 = ! main::initNES1_waitForVBlank2_$4
  if(main::initNES1_waitForVBlank2_$1) goto main::initNES1_waitForVBlank2_@1
  to:main::initNES1_@7
main::initNES1_@7: scope:[main]  from main::initNES1_waitForVBlank2_@1
  asm { ldaPPU_PPUSTATUS  }
  to:main::@8
main::@8: scope:[main]  from main::initNES1_@7
  main::$1 = sizeof  PALETTE
  ppuDataTransfer::ppuData#1 = (void * const )PPU_PALETTE
  ppuDataTransfer::cpuData#1 = (void * const )PALETTE
  ppuDataTransfer::size#1 = main::$1
  call ppuDataTransfer
  to:main::@14
main::@14: scope:[main]  from main::@8
  ppuDataFill::ppuData#2 = (void * const )PPU_ATTRIBUTE_TABLE_0
  ppuDataFill::val#2 = 0
  ppuDataFill::size#2 = $40
  call ppuDataFill
  to:main::@15
main::@15: scope:[main]  from main::@14
  ppuDataFill::ppuData#3 = (void * const )PPU_ATTRIBUTE_TABLE_1
  ppuDataFill::val#3 = 0
  ppuDataFill::size#3 = $40
  call ppuDataFill
  to:main::@16
main::@16: scope:[main]  from main::@15
  call clrscr
  to:main::@17
main::@17: scope:[main]  from main::@16
  main::x#0 = 1
  to:main::screensizex1
main::screensizex1: scope:[main]  from main::@17 main::@19
  main::x#8 = phi( main::@17/main::x#0, main::@19/main::x#1 )
  main::screensizex1_return#0 = $20
  to:main::screensizex1_@return
main::screensizex1_@return: scope:[main]  from main::screensizex1
  main::x#6 = phi( main::screensizex1/main::x#8 )
  main::screensizex1_return#2 = phi( main::screensizex1/main::screensizex1_return#0 )
  main::screensizex1_return#1 = main::screensizex1_return#2
  to:main::@9
main::@9: scope:[main]  from main::screensizex1_@return
  main::x#2 = phi( main::screensizex1_@return/main::x#6 )
  main::screensizex1_return#3 = phi( main::screensizex1_@return/main::screensizex1_return#1 )
  main::$7 = main::screensizex1_return#3
  main::$8 = main::$7 - 1
  main::$9 = main::x#2 < main::$8
  if(main::$9) goto main::@1
  to:main::@2
main::@1: scope:[main]  from main::@9
  main::x#3 = phi( main::@9/main::x#2 )
  cputcxy::x#0 = main::x#3
  cputcxy::y#0 = 1
  cputcxy::c#0 = '-'
  call cputcxy
  to:main::@18
main::@18: scope:[main]  from main::@1
  main::x#10 = phi( main::@1/main::x#3 )
  to:main::screensizey1
main::screensizey1: scope:[main]  from main::@18
  main::x#9 = phi( main::@18/main::x#10 )
  main::screensizey1_return#0 = $1e
  to:main::screensizey1_@return
main::screensizey1_@return: scope:[main]  from main::screensizey1
  main::x#7 = phi( main::screensizey1/main::x#9 )
  main::screensizey1_return#2 = phi( main::screensizey1/main::screensizey1_return#0 )
  main::screensizey1_return#1 = main::screensizey1_return#2
  to:main::@10
main::@10: scope:[main]  from main::screensizey1_@return
  main::x#4 = phi( main::screensizey1_@return/main::x#7 )
  main::screensizey1_return#3 = phi( main::screensizey1_@return/main::screensizey1_return#1 )
  main::$11 = main::screensizey1_return#3
  main::$12 = main::$11 - 4
  cputcxy::x#1 = main::x#4
  cputcxy::y#1 = main::$12
  cputcxy::c#1 = '-'
  call cputcxy
  to:main::@19
main::@19: scope:[main]  from main::@10
  main::x#5 = phi( main::@10/main::x#4 )
  main::x#1 = ++ main::x#5
  to:main::screensizex1
main::@2: scope:[main]  from main::@9
  main::y#0 = 1
  to:main::screensizey2
main::screensizey2: scope:[main]  from main::@2 main::@21
  main::y#8 = phi( main::@2/main::y#0, main::@21/main::y#1 )
  main::screensizey2_return#0 = $1e
  to:main::screensizey2_@return
main::screensizey2_@return: scope:[main]  from main::screensizey2
  main::y#6 = phi( main::screensizey2/main::y#8 )
  main::screensizey2_return#2 = phi( main::screensizey2/main::screensizey2_return#0 )
  main::screensizey2_return#1 = main::screensizey2_return#2
  to:main::@11
main::@11: scope:[main]  from main::screensizey2_@return
  main::y#2 = phi( main::screensizey2_@return/main::y#6 )
  main::screensizey2_return#3 = phi( main::screensizey2_@return/main::screensizey2_return#1 )
  main::$14 = main::screensizey2_return#3
  main::$15 = main::$14 - 3
  main::$16 = main::y#2 < main::$15
  if(main::$16) goto main::@3
  to:main::@4
main::@3: scope:[main]  from main::@11
  main::y#3 = phi( main::@11/main::y#2 )
  cputcxy::x#2 = 1
  cputcxy::y#2 = main::y#3
  cputcxy::c#2 = 'i'
  call cputcxy
  to:main::@20
main::@20: scope:[main]  from main::@3
  main::y#10 = phi( main::@3/main::y#3 )
  to:main::screensizex2
main::screensizex2: scope:[main]  from main::@20
  main::y#9 = phi( main::@20/main::y#10 )
  main::screensizex2_return#0 = $20
  to:main::screensizex2_@return
main::screensizex2_@return: scope:[main]  from main::screensizex2
  main::y#7 = phi( main::screensizex2/main::y#9 )
  main::screensizex2_return#2 = phi( main::screensizex2/main::screensizex2_return#0 )
  main::screensizex2_return#1 = main::screensizex2_return#2
  to:main::@12
main::@12: scope:[main]  from main::screensizex2_@return
  main::y#4 = phi( main::screensizex2_@return/main::y#7 )
  main::screensizex2_return#3 = phi( main::screensizex2_@return/main::screensizex2_return#1 )
  main::$18 = main::screensizex2_return#3
  main::$19 = main::$18 - 2
  cputcxy::x#3 = main::$19
  cputcxy::y#3 = main::y#4
  cputcxy::c#3 = 'i'
  call cputcxy
  to:main::@21
main::@21: scope:[main]  from main::@12
  main::y#5 = phi( main::@12/main::y#4 )
  main::y#1 = ++ main::y#5
  to:main::screensizey2
main::@4: scope:[main]  from main::@11
  main::i#0 = 0
  to:main::screensizey3
main::screensizey3: scope:[main]  from main::@23 main::@4
  main::i#7 = phi( main::@23/main::i#1, main::@4/main::i#0 )
  main::screensizey3_return#0 = $1e
  to:main::screensizey3_@return
main::screensizey3_@return: scope:[main]  from main::screensizey3
  main::i#6 = phi( main::screensizey3/main::i#7 )
  main::screensizey3_return#2 = phi( main::screensizey3/main::screensizey3_return#0 )
  main::screensizey3_return#1 = main::screensizey3_return#2
  to:main::@13
main::@13: scope:[main]  from main::screensizey3_@return
  main::i#2 = phi( main::screensizey3_@return/main::i#6 )
  main::screensizey3_return#3 = phi( main::screensizey3_@return/main::screensizey3_return#1 )
  main::$21 = main::screensizey3_return#3
  main::$22 = main::i#2 < main::$21
  if(main::$22) goto main::@5
  to:main::@6
main::@5: scope:[main]  from main::@13
  main::i#3 = phi( main::@13/main::i#2 )
  main::$23 = main::i#3 & $f
  uctoa::value#1 = main::$23
  uctoa::buffer#5 = num_buffer
  uctoa::radix#0 = HEXADECIMAL
  call uctoa
  to:main::@22
main::@22: scope:[main]  from main::@5
  main::i#4 = phi( main::@5/main::i#3 )
  cputsxy::x#0 = main::i#4
  cputsxy::y#0 = main::i#4
  cputsxy::s#0 = num_buffer
  call cputsxy
  to:main::@23
main::@23: scope:[main]  from main::@22
  main::i#5 = phi( main::@22/main::i#4 )
  main::i#1 = ++ main::i#5
  to:main::screensizey3
main::@6: scope:[main]  from main::@13
  x_scroll = 0
  y_scroll = -8
  to:main::enableVideoOutput1
main::enableVideoOutput1: scope:[main]  from main::@6
  main::enableVideoOutput1_$2 = (char *)PPU
  main::enableVideoOutput1_$0 = main::enableVideoOutput1_$2 + OFFSET_STRUCT_RICOH_2C02_PPUCTRL
  *main::enableVideoOutput1_$0 = $80
  main::enableVideoOutput1_$3 = (char *)PPU
  main::enableVideoOutput1_$1 = main::enableVideoOutput1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUMASK
  *main::enableVideoOutput1_$1 = $1e
  to:main::@7
main::@7: scope:[main]  from main::@7 main::enableVideoOutput1
  main::$26 = 0 != 1
  if(main::$26) goto main::@7
  to:main::@return
main::@return: scope:[main]  from main::@7
  return 
  to:@return

__interrupt(hardware_all) void vblank()
vblank: scope:[vblank]  from
  call readJoy1
  readJoy1::return#2 = readJoy1::return#1
  to:vblank::@11
vblank::@11: scope:[vblank]  from vblank
  readJoy1::return#4 = phi( vblank/readJoy1::return#2 )
  vblank::joy#0 = readJoy1::return#4
  vblank::$1 = vblank::joy#0 & JOY_DOWN
  vblank::$17 = 0 != vblank::$1
  vblank::$2 = ! vblank::$17
  if(vblank::$2) goto vblank::@1
  to:vblank::@5
vblank::@1: scope:[vblank]  from vblank::@11 vblank::@5 vblank::@6
  vblank::joy#1 = phi( vblank::@11/vblank::joy#0, vblank::@5/vblank::joy#4, vblank::@6/vblank::joy#5 )
  vblank::$3 = vblank::joy#1 & JOY_UP
  vblank::$18 = 0 != vblank::$3
  vblank::$4 = ! vblank::$18
  if(vblank::$4) goto vblank::@2
  to:vblank::@7
vblank::@5: scope:[vblank]  from vblank::@11
  vblank::joy#4 = phi( vblank::@11/vblank::joy#0 )
  y_scroll = ++ y_scroll
  vblank::$9 = y_scroll == $f0
  vblank::$10 = ! vblank::$9
  if(vblank::$10) goto vblank::@1
  to:vblank::@6
vblank::@6: scope:[vblank]  from vblank::@5
  vblank::joy#5 = phi( vblank::@5/vblank::joy#4 )
  y_scroll = 0
  to:vblank::@1
vblank::@2: scope:[vblank]  from vblank::@1 vblank::@7 vblank::@8
  vblank::joy#2 = phi( vblank::@1/vblank::joy#1, vblank::@7/vblank::joy#6, vblank::@8/vblank::joy#7 )
  vblank::$5 = vblank::joy#2 & JOY_LEFT
  vblank::$19 = 0 != vblank::$5
  vblank::$6 = ! vblank::$19
  if(vblank::$6) goto vblank::@3
  to:vblank::@9
vblank::@7: scope:[vblank]  from vblank::@1
  vblank::joy#6 = phi( vblank::@1/vblank::joy#1 )
  y_scroll = -- y_scroll
  vblank::$11 = y_scroll == $ff
  vblank::$12 = ! vblank::$11
  if(vblank::$12) goto vblank::@2
  to:vblank::@8
vblank::@8: scope:[vblank]  from vblank::@7
  vblank::joy#7 = phi( vblank::@7/vblank::joy#6 )
  y_scroll = $ef
  to:vblank::@2
vblank::@3: scope:[vblank]  from vblank::@2 vblank::@9
  vblank::joy#3 = phi( vblank::@2/vblank::joy#2, vblank::@9/vblank::joy#8 )
  vblank::$7 = vblank::joy#3 & JOY_RIGHT
  vblank::$20 = 0 != vblank::$7
  vblank::$8 = ! vblank::$20
  if(vblank::$8) goto vblank::@4
  to:vblank::@10
vblank::@9: scope:[vblank]  from vblank::@2
  vblank::joy#8 = phi( vblank::@2/vblank::joy#2 )
  x_scroll = ++ x_scroll
  to:vblank::@3
vblank::@4: scope:[vblank]  from vblank::@10 vblank::@3
  vblank::$15 = (char *)PPU
  vblank::$13 = vblank::$15 + OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
  *vblank::$13 = x_scroll
  vblank::$16 = (char *)PPU
  vblank::$14 = vblank::$16 + OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
  *vblank::$14 = y_scroll
  to:vblank::@return
vblank::@10: scope:[vblank]  from vblank::@3
  x_scroll = -- x_scroll
  to:vblank::@4
vblank::@return: scope:[vblank]  from vblank::@4
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  conio_cursor_x = 0
  conio_cursor_y = 0
  conio_line_text = CONIO_SCREEN_TEXT
  conio_scroll_enable = 1
  x_scroll = 0
  y_scroll = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  return 
  to:@return

SYMBOL TABLE SSA
__constant struct RICOH_2A03 *APU = (struct RICOH_2A03 *)$4000
__constant char BINARY = 2
__constant char * const CONIO_SCREEN_TEXT = PPU_NAME_TABLE_0
__constant char DECIMAL = $a
__constant char DIGITS[] = "0123456789abcdef"z
__constant char * const FR_COUNTER = (char *)$4017
__constant char HEXADECIMAL = $10
__constant const char JOY_DOWN = 4
__constant const char JOY_LEFT = 2
__constant const char JOY_RIGHT = 1
__constant const char JOY_UP = 8
__constant char * const MEMORY = (char *)0
__constant char OCTAL = 8
__constant char OFFSET_STRUCT_RICOH_2A03_DMC_FREQ = $10
__constant char OFFSET_STRUCT_RICOH_2A03_JOY1 = $16
__constant char OFFSET_STRUCT_RICOH_2C02_PPUADDR = 6
__constant char OFFSET_STRUCT_RICOH_2C02_PPUCTRL = 0
__constant char OFFSET_STRUCT_RICOH_2C02_PPUDATA = 7
__constant char OFFSET_STRUCT_RICOH_2C02_PPUMASK = 1
__constant char OFFSET_STRUCT_RICOH_2C02_PPUSCROLL = 5
__constant char OFFSET_STRUCT_RICOH_2C02_PPUSTATUS = 2
__constant char PALETTE[$20] = { 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $f, $30, 8, 1, $f, $18, 8, 1, $30, $37, $1a, $f, $f, $f, $f }
__constant struct RICOH_2C02 *PPU = (struct RICOH_2C02 *)$2000
__constant char * const PPU_ATTRIBUTE_TABLE_0 = (char *)$23c0
__constant char * const PPU_ATTRIBUTE_TABLE_1 = (char *)$27c0
__constant char * const PPU_NAME_TABLE_0 = (char *)$2000
__constant char * const PPU_PALETTE = (char *)$3f00
__constant volatile char * const PPU_PPUDATA = (char *)$2007
__constant volatile char * const PPU_PPUSTATUS = (char *)$2002
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char RADIX_BINARY_VALUES_CHAR[] = { $80, $40, $20, $10, 8, 4, 2 }
__constant char RADIX_DECIMAL_VALUES_CHAR[] = { $64, $a }
__constant char RADIX_HEXADECIMAL_VALUES_CHAR[] = { $10 }
__constant char RADIX_OCTAL_VALUES_CHAR[] = { $40, 8 }
__constant char TILES[] = kickasm {{ .var filechargen = LoadBinary("characters.901225-01.bin")
     .for(var c=0; c<256; c++) {
        // Plane 0
        .fill 8, filechargen.get(c*8+i)
        // Plane 1
        .fill 8, 0
    }
 }}
__constant void (*VECTORS[])() = { &vblank, &main, 0 }
void __start()
void clrscr()
__constant char conio_cscroll_buffer[$20] = { fill( $20, 0) }
__loadstore char conio_cursor_x
__loadstore char conio_cursor_y
__loadstore char *conio_line_text
__loadstore char conio_scroll_enable
void cputc(char c)
bool cputc::$0
char *cputc::$1
bool cputc::$3
bool cputc::$4
char cputc::c
char cputc::c#0
char cputc::c#1
char cputc::c#2
char cputc::c#3
void cputcxy(char x , char y , char c)
char cputcxy::c
char cputcxy::c#0
char cputcxy::c#1
char cputcxy::c#2
char cputcxy::c#3
char cputcxy::c#4
char cputcxy::c#5
char cputcxy::x
char cputcxy::x#0
char cputcxy::x#1
char cputcxy::x#2
char cputcxy::x#3
char cputcxy::x#4
char cputcxy::y
char cputcxy::y#0
char cputcxy::y#1
char cputcxy::y#2
char cputcxy::y#3
char cputcxy::y#4
void cputln()
void cputs(const char *s)
char cputs::$0
bool cputs::$2
char cputs::c
char cputs::c#0
char cputs::c#1
char cputs::c#2
const char *cputs::s
const char *cputs::s#0
const char *cputs::s#1
const char *cputs::s#2
const char *cputs::s#3
const char *cputs::s#4
const char *cputs::s#5
void cputsxy(char x , char y , const char *s)
const char *cputsxy::s
const char *cputsxy::s#0
const char *cputsxy::s#1
const char *cputsxy::s#2
char cputsxy::x
char cputsxy::x#0
char cputsxy::x#1
char cputsxy::y
char cputsxy::y#0
char cputsxy::y#1
void cscroll()
bool cscroll::$0
bool cscroll::$1
bool cscroll::$3
bool cscroll::$7
char *cscroll::line1
char *cscroll::line1#0
char *cscroll::line1#1
char *cscroll::line1#2
char *cscroll::line1#3
char *cscroll::line1#4
char *cscroll::line1#5
char *cscroll::line2
char *cscroll::line2#0
char *cscroll::line2#1
char *cscroll::line2#2
char *cscroll::line2#3
char *cscroll::line2#4
char *cscroll::line2#5
char cscroll::y
char cscroll::y#0
char cscroll::y#1
char cscroll::y#2
char cscroll::y#3
char cscroll::y#4
char cscroll::y#5
void gotoxy(char x , char y)
bool gotoxy::$0
bool gotoxy::$1
bool gotoxy::$2
bool gotoxy::$3
char *gotoxy::$5
unsigned int gotoxy::$6
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0
char gotoxy::x
char gotoxy::x#0
char gotoxy::x#1
char gotoxy::x#2
char gotoxy::x#3
char gotoxy::x#4
char gotoxy::x#5
char gotoxy::x#6
char gotoxy::x#7
char gotoxy::y
char gotoxy::y#0
char gotoxy::y#1
char gotoxy::y#2
char gotoxy::y#3
char gotoxy::y#4
char gotoxy::y#5
char gotoxy::y#6
char gotoxy::y#7
void main()
unsigned int main::$1
char main::$11
number main::$12
char main::$14
number main::$15
bool main::$16
char main::$18
number main::$19
char main::$21
bool main::$22
number main::$23
bool main::$26
char main::$7
number main::$8
bool main::$9
char *main::enableVideoOutput1_$0
char *main::enableVideoOutput1_$1
char *main::enableVideoOutput1_$2
char *main::enableVideoOutput1_$3
char main::i
char main::i#0
char main::i#1
char main::i#2
char main::i#3
char main::i#4
char main::i#5
char main::i#6
char main::i#7
bool main::initNES1_$5
char *main::initNES1_disableAudioOutput1_$0
char *main::initNES1_disableAudioOutput1_$1
char *main::initNES1_disableVideoOutput1_$0
char *main::initNES1_disableVideoOutput1_$1
char *main::initNES1_disableVideoOutput1_$2
char *main::initNES1_disableVideoOutput1_$3
char main::initNES1_i
char main::initNES1_i#0
char main::initNES1_i#1
char main::initNES1_i#2
number main::initNES1_waitForVBlank1_$0
bool main::initNES1_waitForVBlank1_$1
volatile char *main::initNES1_waitForVBlank1_$2
volatile char *main::initNES1_waitForVBlank1_$3
bool main::initNES1_waitForVBlank1_$4
number main::initNES1_waitForVBlank2_$0
bool main::initNES1_waitForVBlank2_$1
volatile char *main::initNES1_waitForVBlank2_$2
volatile char *main::initNES1_waitForVBlank2_$3
bool main::initNES1_waitForVBlank2_$4
char main::screensizex1_return
char main::screensizex1_return#0
char main::screensizex1_return#1
char main::screensizex1_return#2
char main::screensizex1_return#3
char main::screensizex2_return
char main::screensizex2_return#0
char main::screensizex2_return#1
char main::screensizex2_return#2
char main::screensizex2_return#3
char main::screensizey1_return
char main::screensizey1_return#0
char main::screensizey1_return#1
char main::screensizey1_return#2
char main::screensizey1_return#3
char main::screensizey2_return
char main::screensizey2_return#0
char main::screensizey2_return#1
char main::screensizey2_return#2
char main::screensizey2_return#3
char main::screensizey3_return
char main::screensizey3_return#0
char main::screensizey3_return#1
char main::screensizey3_return#2
char main::screensizey3_return#3
char main::x
char main::x#0
char main::x#1
char main::x#10
char main::x#2
char main::x#3
char main::x#4
char main::x#5
char main::x#6
char main::x#7
char main::x#8
char main::x#9
char main::y
char main::y#0
char main::y#1
char main::y#10
char main::y#2
char main::y#3
char main::y#4
char main::y#5
char main::y#6
char main::y#7
char main::y#8
char main::y#9
__constant char num_buffer[$b] = { fill( $b, 0) }
void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
bool ppuDataFetch::$1
char ppuDataFetch::$2
void * const ppuDataFetch::cpuData
void * const ppuDataFetch::cpuData#0
void * const ppuDataFetch::cpuData#1
void * const ppuDataFetch::cpuData#2
void * const ppuDataFetch::cpuData#3
char *ppuDataFetch::cpuDst
char *ppuDataFetch::cpuDst#0
char *ppuDataFetch::cpuDst#1
char *ppuDataFetch::cpuDst#2
char *ppuDataFetch::cpuDst#3
char *ppuDataFetch::cpuDst#4
char *ppuDataFetch::cpuDst#5
unsigned int ppuDataFetch::i
unsigned int ppuDataFetch::i#0
unsigned int ppuDataFetch::i#1
unsigned int ppuDataFetch::i#2
unsigned int ppuDataFetch::i#3
unsigned int ppuDataFetch::i#4
unsigned int ppuDataFetch::i#5
void * const ppuDataFetch::ppuData
void * const ppuDataFetch::ppuData#0
void * const ppuDataFetch::ppuData#1
char ppuDataFetch::ppuDataPrepare1_$0
char ppuDataFetch::ppuDataPrepare1_$1
char *ppuDataFetch::ppuDataPrepare1_$2
char *ppuDataFetch::ppuDataPrepare1_$3
char *ppuDataFetch::ppuDataPrepare1_$4
char *ppuDataFetch::ppuDataPrepare1_$5
void * const ppuDataFetch::ppuDataPrepare1_ppuData
void * const ppuDataFetch::ppuDataPrepare1_ppuData#0
void * const ppuDataFetch::ppuDataPrepare1_ppuData#1
char *ppuDataFetch::ppuDataRead1_$0
char *ppuDataFetch::ppuDataRead1_$1
char ppuDataFetch::ppuDataRead1_return
char ppuDataFetch::ppuDataRead1_return#0
char ppuDataFetch::ppuDataRead1_return#1
char ppuDataFetch::ppuDataRead1_return#2
char ppuDataFetch::ppuDataRead1_return#3
unsigned int ppuDataFetch::size
unsigned int ppuDataFetch::size#0
unsigned int ppuDataFetch::size#1
unsigned int ppuDataFetch::size#2
unsigned int ppuDataFetch::size#3
unsigned int ppuDataFetch::size#4
unsigned int ppuDataFetch::size#5
unsigned int ppuDataFetch::size#6
unsigned int ppuDataFetch::size#7
void ppuDataFill(void * const ppuData , char val , unsigned int size)
bool ppuDataFill::$1
unsigned int ppuDataFill::i
unsigned int ppuDataFill::i#0
unsigned int ppuDataFill::i#1
unsigned int ppuDataFill::i#2
unsigned int ppuDataFill::i#3
unsigned int ppuDataFill::i#4
unsigned int ppuDataFill::i#5
void * const ppuDataFill::ppuData
void * const ppuDataFill::ppuData#0
void * const ppuDataFill::ppuData#1
void * const ppuDataFill::ppuData#2
void * const ppuDataFill::ppuData#3
void * const ppuDataFill::ppuData#4
char ppuDataFill::ppuDataPrepare1_$0
char ppuDataFill::ppuDataPrepare1_$1
char *ppuDataFill::ppuDataPrepare1_$2
char *ppuDataFill::ppuDataPrepare1_$3
char *ppuDataFill::ppuDataPrepare1_$4
char *ppuDataFill::ppuDataPrepare1_$5
void * const ppuDataFill::ppuDataPrepare1_ppuData
void * const ppuDataFill::ppuDataPrepare1_ppuData#0
void * const ppuDataFill::ppuDataPrepare1_ppuData#1
char *ppuDataFill::ppuDataPut1_$0
char *ppuDataFill::ppuDataPut1_$1
char ppuDataFill::ppuDataPut1_val
char ppuDataFill::ppuDataPut1_val#0
char ppuDataFill::ppuDataPut1_val#1
unsigned int ppuDataFill::size
unsigned int ppuDataFill::size#0
unsigned int ppuDataFill::size#1
unsigned int ppuDataFill::size#10
unsigned int ppuDataFill::size#2
unsigned int ppuDataFill::size#3
unsigned int ppuDataFill::size#4
unsigned int ppuDataFill::size#5
unsigned int ppuDataFill::size#6
unsigned int ppuDataFill::size#7
unsigned int ppuDataFill::size#8
unsigned int ppuDataFill::size#9
char ppuDataFill::val
char ppuDataFill::val#0
char ppuDataFill::val#1
char ppuDataFill::val#10
char ppuDataFill::val#2
char ppuDataFill::val#3
char ppuDataFill::val#4
char ppuDataFill::val#5
char ppuDataFill::val#6
char ppuDataFill::val#7
char ppuDataFill::val#8
char ppuDataFill::val#9
void ppuDataSet(void * const ppuData , char val)
void * const ppuDataSet::ppuData
void * const ppuDataSet::ppuData#0
void * const ppuDataSet::ppuData#1
char ppuDataSet::ppuDataPrepare1_$0
char ppuDataSet::ppuDataPrepare1_$1
char *ppuDataSet::ppuDataPrepare1_$2
char *ppuDataSet::ppuDataPrepare1_$3
char *ppuDataSet::ppuDataPrepare1_$4
char *ppuDataSet::ppuDataPrepare1_$5
void * const ppuDataSet::ppuDataPrepare1_ppuData
void * const ppuDataSet::ppuDataPrepare1_ppuData#0
void * const ppuDataSet::ppuDataPrepare1_ppuData#1
char *ppuDataSet::ppuDataPut1_$0
char *ppuDataSet::ppuDataPut1_$1
char ppuDataSet::ppuDataPut1_val
char ppuDataSet::ppuDataPut1_val#0
char ppuDataSet::ppuDataPut1_val#1
char ppuDataSet::val
char ppuDataSet::val#0
char ppuDataSet::val#1
char ppuDataSet::val#2
char ppuDataSet::val#3
void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
bool ppuDataTransfer::$1
void * const ppuDataTransfer::cpuData
void * const ppuDataTransfer::cpuData#0
void * const ppuDataTransfer::cpuData#1
void * const ppuDataTransfer::cpuData#2
void * const ppuDataTransfer::cpuData#3
void * const ppuDataTransfer::cpuData#4
char *ppuDataTransfer::cpuSrc
char *ppuDataTransfer::cpuSrc#0
char *ppuDataTransfer::cpuSrc#1
char *ppuDataTransfer::cpuSrc#2
char *ppuDataTransfer::cpuSrc#3
char *ppuDataTransfer::cpuSrc#4
char *ppuDataTransfer::cpuSrc#5
unsigned int ppuDataTransfer::i
unsigned int ppuDataTransfer::i#0
unsigned int ppuDataTransfer::i#1
unsigned int ppuDataTransfer::i#2
unsigned int ppuDataTransfer::i#3
unsigned int ppuDataTransfer::i#4
unsigned int ppuDataTransfer::i#5
void * const ppuDataTransfer::ppuData
void * const ppuDataTransfer::ppuData#0
void * const ppuDataTransfer::ppuData#1
void * const ppuDataTransfer::ppuData#2
char ppuDataTransfer::ppuDataPrepare1_$0
char ppuDataTransfer::ppuDataPrepare1_$1
char *ppuDataTransfer::ppuDataPrepare1_$2
char *ppuDataTransfer::ppuDataPrepare1_$3
char *ppuDataTransfer::ppuDataPrepare1_$4
char *ppuDataTransfer::ppuDataPrepare1_$5
void * const ppuDataTransfer::ppuDataPrepare1_ppuData
void * const ppuDataTransfer::ppuDataPrepare1_ppuData#0
void * const ppuDataTransfer::ppuDataPrepare1_ppuData#1
char *ppuDataTransfer::ppuDataPut1_$0
char *ppuDataTransfer::ppuDataPut1_$1
char ppuDataTransfer::ppuDataPut1_val
char ppuDataTransfer::ppuDataPut1_val#0
char ppuDataTransfer::ppuDataPut1_val#1
unsigned int ppuDataTransfer::size
unsigned int ppuDataTransfer::size#0
unsigned int ppuDataTransfer::size#1
unsigned int ppuDataTransfer::size#2
unsigned int ppuDataTransfer::size#3
unsigned int ppuDataTransfer::size#4
unsigned int ppuDataTransfer::size#5
unsigned int ppuDataTransfer::size#6
unsigned int ppuDataTransfer::size#7
unsigned int ppuDataTransfer::size#8
char readJoy1()
bool readJoy1::$0
char readJoy1::$1
number readJoy1::$2
number readJoy1::$3
char *readJoy1::$4
char *readJoy1::$5
char *readJoy1::$6
char *readJoy1::$7
char *readJoy1::$8
char *readJoy1::$9
char readJoy1::i
char readJoy1::i#0
char readJoy1::i#1
char readJoy1::i#2
char readJoy1::i#3
char readJoy1::joy
char readJoy1::joy#0
char readJoy1::joy#1
char readJoy1::joy#2
char readJoy1::joy#3
char readJoy1::joy#4
char readJoy1::return
char readJoy1::return#0
char readJoy1::return#1
char readJoy1::return#2
char readJoy1::return#3
char readJoy1::return#4
void uctoa(char value , char *buffer , char radix)
bool uctoa::$0
bool uctoa::$1
char uctoa::$10
bool uctoa::$2
bool uctoa::$3
number uctoa::$4
bool uctoa::$5
bool uctoa::$6
bool uctoa::$7
bool uctoa::$8
char uctoa::$9
char *uctoa::buffer
char *uctoa::buffer#0
char *uctoa::buffer#1
char *uctoa::buffer#10
char *uctoa::buffer#11
char *uctoa::buffer#12
char *uctoa::buffer#13
char *uctoa::buffer#14
char *uctoa::buffer#15
char *uctoa::buffer#16
char *uctoa::buffer#17
char *uctoa::buffer#18
char *uctoa::buffer#19
char *uctoa::buffer#2
char *uctoa::buffer#20
char *uctoa::buffer#21
char *uctoa::buffer#3
char *uctoa::buffer#4
char *uctoa::buffer#5
char *uctoa::buffer#6
char *uctoa::buffer#7
char *uctoa::buffer#8
char *uctoa::buffer#9
char uctoa::digit
char uctoa::digit#0
char uctoa::digit#1
char uctoa::digit#2
char uctoa::digit#3
char uctoa::digit#4
char uctoa::digit#5
char uctoa::digit#6
char uctoa::digit_value
char uctoa::digit_value#0
char uctoa::digit_value#1
char *uctoa::digit_values
char *uctoa::digit_values#0
char *uctoa::digit_values#1
char *uctoa::digit_values#10
char *uctoa::digit_values#2
char *uctoa::digit_values#3
char *uctoa::digit_values#4
char *uctoa::digit_values#5
char *uctoa::digit_values#6
char *uctoa::digit_values#7
char *uctoa::digit_values#8
char *uctoa::digit_values#9
char uctoa::max_digits
char uctoa::max_digits#0
char uctoa::max_digits#1
char uctoa::max_digits#10
char uctoa::max_digits#2
char uctoa::max_digits#3
char uctoa::max_digits#4
char uctoa::max_digits#5
char uctoa::max_digits#6
char uctoa::max_digits#7
char uctoa::max_digits#8
char uctoa::max_digits#9
char uctoa::radix
char uctoa::radix#0
char uctoa::radix#1
char uctoa::radix#2
char uctoa::radix#3
char uctoa::radix#4
char uctoa::started
char uctoa::started#0
char uctoa::started#1
char uctoa::started#2
char uctoa::started#3
char uctoa::started#4
char uctoa::value
char uctoa::value#0
char uctoa::value#1
char uctoa::value#10
char uctoa::value#11
char uctoa::value#12
char uctoa::value#13
char uctoa::value#14
char uctoa::value#15
char uctoa::value#2
char uctoa::value#3
char uctoa::value#4
char uctoa::value#5
char uctoa::value#6
char uctoa::value#7
char uctoa::value#8
char uctoa::value#9
char uctoa_append(char *buffer , char value , char sub)
bool uctoa_append::$0
char *uctoa_append::buffer
char *uctoa_append::buffer#0
char *uctoa_append::buffer#1
char *uctoa_append::buffer#2
char *uctoa_append::buffer#3
char *uctoa_append::buffer#4
char uctoa_append::digit
char uctoa_append::digit#0
char uctoa_append::digit#1
char uctoa_append::digit#2
char uctoa_append::digit#3
char uctoa_append::digit#4
char uctoa_append::return
char uctoa_append::return#0
char uctoa_append::return#1
char uctoa_append::return#2
char uctoa_append::return#3
char uctoa_append::return#4
char uctoa_append::sub
char uctoa_append::sub#0
char uctoa_append::sub#1
char uctoa_append::sub#2
char uctoa_append::sub#3
char uctoa_append::value
char uctoa_append::value#0
char uctoa_append::value#1
char uctoa_append::value#2
char uctoa_append::value#3
char uctoa_append::value#4
char uctoa_append::value#5
__interrupt(hardware_all) void vblank()
char vblank::$1
bool vblank::$10
bool vblank::$11
bool vblank::$12
char *vblank::$13
char *vblank::$14
char *vblank::$15
char *vblank::$16
bool vblank::$17
bool vblank::$18
bool vblank::$19
bool vblank::$2
bool vblank::$20
char vblank::$3
bool vblank::$4
char vblank::$5
bool vblank::$6
char vblank::$7
bool vblank::$8
bool vblank::$9
char vblank::joy
char vblank::joy#0
char vblank::joy#1
char vblank::joy#2
char vblank::joy#3
char vblank::joy#4
char vblank::joy#5
char vblank::joy#6
char vblank::joy#7
char vblank::joy#8
__loadstore volatile char x_scroll
__loadstore volatile char y_scroll

Adding number conversion cast (unumber) 1 in *readJoy1::$4 = 1
Adding number conversion cast (unumber) 0 in *readJoy1::$5 = 0
Adding number conversion cast (unumber) 8 in readJoy1::$0 = readJoy1::i#2 < 8
Adding number conversion cast (unumber) 1 in readJoy1::$1 = readJoy1::joy#2 << 1
Adding number conversion cast (unumber) 1 in readJoy1::$2 = *readJoy1::$6 & 1
Adding number conversion cast (unumber) readJoy1::$2 in readJoy1::$2 = *readJoy1::$6 & (unumber)1
Adding number conversion cast (unumber) readJoy1::$3 in readJoy1::$3 = readJoy1::$1 | readJoy1::$2
Adding number conversion cast (unumber) $3c0 in ppuDataFill::size#0 = $3c0
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
Adding number conversion cast (unumber) 0 in conio_cursor_y = 0
Adding number conversion cast (unumber) $1e in gotoxy::$0 = gotoxy::y#4 > $1e
Adding number conversion cast (unumber) $20 in gotoxy::$2 = gotoxy::x#4 >= $20
Adding number conversion cast (unumber) 0 in gotoxy::y#0 = 0
Adding number conversion cast (unumber) $20 in gotoxy::line_offset#0 = gotoxy::$6 * $20
Adding number conversion cast (unumber) 0 in gotoxy::x#0 = 0
Adding number conversion cast (unumber) $20 in cputc::$3 = conio_cursor_x == $20
Adding number conversion cast (unumber) $20 in conio_line_text = conio_line_text + $20
Adding number conversion cast (unumber) 0 in conio_cursor_x = 0
Adding number conversion cast (unumber) 0 in cputs::$2 = 0 != cputs::$0
Adding number conversion cast (unumber) $1e in cscroll::$0 = conio_cursor_y == $1e
Adding number conversion cast (unumber) 0 in cscroll::$7 = 0 != conio_scroll_enable
Adding number conversion cast (unumber) $20 in cscroll::line2#0 = CONIO_SCREEN_TEXT+$20
Adding number conversion cast (unumber) 0 in gotoxy::x#3 = 0
Adding number conversion cast (unumber) 0 in gotoxy::y#3 = 0
Adding number conversion cast (unumber) $1e-1 in cscroll::$3 = cscroll::y#2 < $1e-1
Adding number conversion cast (unumber) $20 in ppuDataFetch::size#0 = $20
Adding number conversion cast (unumber) $20 in ppuDataTransfer::size#0 = $20
Adding number conversion cast (unumber) $20 in cscroll::line1#1 = cscroll::line1#3 + $20
Adding number conversion cast (unumber) $20 in cscroll::line2#1 = cscroll::line2#3 + $20
Adding number conversion cast (unumber) $20 in ppuDataFill::ppuData#1 = (void * const )CONIO_SCREEN_TEXT+$1e*$20-$20
Adding number conversion cast (unumber) $1e*$20 in ppuDataFill::ppuData#1 = (void * const )CONIO_SCREEN_TEXT+$1e*$20-(unumber)$20
Adding number conversion cast (unumber) $20 in ppuDataFill::size#1 = $20
Adding number conversion cast (unumber) $20 in conio_line_text = conio_line_text - $20
Adding number conversion cast (unumber) 3 in uctoa::max_digits#1 = 3
Adding number conversion cast (unumber) 2 in uctoa::max_digits#2 = 2
Adding number conversion cast (unumber) 3 in uctoa::max_digits#3 = 3
Adding number conversion cast (unumber) 8 in uctoa::max_digits#4 = 8
Adding number conversion cast (unumber) 0 in *uctoa::buffer#2 = 0
Adding number conversion cast (unumber) 1 in uctoa::$4 = uctoa::max_digits#5 - 1
Adding number conversion cast (unumber) uctoa::$4 in uctoa::$4 = uctoa::max_digits#5 - (unumber)1
Adding number conversion cast (unumber) 0 in *uctoa::buffer#3 = 0
Adding number conversion cast (unumber) 1 in uctoa::started#1 = 1
Adding number conversion cast (unumber) 0 in *main::initNES1_disableVideoOutput1_$0 = 0
Adding number conversion cast (unumber) 0 in *main::initNES1_disableVideoOutput1_$1 = 0
Adding number conversion cast (unumber) $40 in *FR_COUNTER = $40
Adding number conversion cast (unumber) $40 in *main::initNES1_disableAudioOutput1_$0 = $40
Adding number conversion cast (unumber) $80 in main::initNES1_waitForVBlank1_$0 = *main::initNES1_waitForVBlank1_$2 & $80
Adding number conversion cast (unumber) main::initNES1_waitForVBlank1_$0 in main::initNES1_waitForVBlank1_$0 = *main::initNES1_waitForVBlank1_$2 & (unumber)$80
Adding number conversion cast (unumber) 0 in main::initNES1_waitForVBlank1_$4 = 0 != main::initNES1_waitForVBlank1_$0
Adding number conversion cast (unumber) 0 in (MEMORY+0)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) 0 in (MEMORY+0)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$100)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $100 in (MEMORY+$100)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$200)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $200 in (MEMORY+$200)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$300)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $300 in (MEMORY+$300)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$400)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $400 in (MEMORY+$400)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$500)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $500 in (MEMORY+$500)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$600)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $600 in (MEMORY+$600)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in (MEMORY+$700)[main::initNES1_i#2] = 0
Adding number conversion cast (unumber) $700 in (MEMORY+$700)[main::initNES1_i#2] = ((unumber)) 0
Adding number conversion cast (unumber) 0 in main::initNES1_$5 = 0 != main::initNES1_i#1
Adding number conversion cast (unumber) $80 in main::initNES1_waitForVBlank2_$0 = *main::initNES1_waitForVBlank2_$2 & $80
Adding number conversion cast (unumber) main::initNES1_waitForVBlank2_$0 in main::initNES1_waitForVBlank2_$0 = *main::initNES1_waitForVBlank2_$2 & (unumber)$80
Adding number conversion cast (unumber) 0 in main::initNES1_waitForVBlank2_$4 = 0 != main::initNES1_waitForVBlank2_$0
Adding number conversion cast (unumber) 0 in ppuDataFill::val#2 = 0
Adding number conversion cast (unumber) $40 in ppuDataFill::size#2 = $40
Adding number conversion cast (unumber) 0 in ppuDataFill::val#3 = 0
Adding number conversion cast (unumber) $40 in ppuDataFill::size#3 = $40
Adding number conversion cast (unumber) $20 in main::screensizex1_return#0 = $20
Adding number conversion cast (unumber) 1 in main::$8 = main::$7 - 1
Adding number conversion cast (unumber) main::$8 in main::$8 = main::$7 - (unumber)1
Adding number conversion cast (unumber) 1 in cputcxy::y#0 = 1
Adding number conversion cast (unumber) $1e in main::screensizey1_return#0 = $1e
Adding number conversion cast (unumber) 4 in main::$12 = main::$11 - 4
Adding number conversion cast (unumber) main::$12 in main::$12 = main::$11 - (unumber)4
Adding number conversion cast (unumber) $1e in main::screensizey2_return#0 = $1e
Adding number conversion cast (unumber) 3 in main::$15 = main::$14 - 3
Adding number conversion cast (unumber) main::$15 in main::$15 = main::$14 - (unumber)3
Adding number conversion cast (unumber) 1 in cputcxy::x#2 = 1
Adding number conversion cast (unumber) $20 in main::screensizex2_return#0 = $20
Adding number conversion cast (unumber) 2 in main::$19 = main::$18 - 2
Adding number conversion cast (unumber) main::$19 in main::$19 = main::$18 - (unumber)2
Adding number conversion cast (unumber) $1e in main::screensizey3_return#0 = $1e
Adding number conversion cast (unumber) $f in main::$23 = main::i#3 & $f
Adding number conversion cast (unumber) main::$23 in main::$23 = main::i#3 & (unumber)$f
Adding number conversion cast (unumber) 0 in x_scroll = 0
Adding number conversion cast (unumber) -8 in y_scroll = -8
Adding number conversion cast (unumber) $80 in *main::enableVideoOutput1_$0 = $80
Adding number conversion cast (unumber) $1e in *main::enableVideoOutput1_$1 = $1e
Adding number conversion cast (unumber) 0 in vblank::$17 = 0 != vblank::$1
Adding number conversion cast (unumber) 0 in vblank::$18 = 0 != vblank::$3
Adding number conversion cast (unumber) $f0 in vblank::$9 = y_scroll == $f0
Adding number conversion cast (unumber) 0 in y_scroll = 0
Adding number conversion cast (unumber) 0 in vblank::$19 = 0 != vblank::$5
Adding number conversion cast (unumber) $ff in vblank::$11 = y_scroll == $ff
Adding number conversion cast (unumber) $ef in y_scroll = $ef
Adding number conversion cast (unumber) 0 in vblank::$20 = 0 != vblank::$7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast *readJoy1::$4 = (unumber)1
Inlining cast *readJoy1::$5 = (unumber)0
Inlining cast ppuDataFill::size#0 = (unumber)$3c0
Inlining cast conio_cursor_x = (unumber)0
Inlining cast conio_cursor_y = (unumber)0
Inlining cast gotoxy::y#0 = (unumber)0
Inlining cast gotoxy::x#0 = (unumber)0
Inlining cast conio_cursor_x = (unumber)0
Inlining cast gotoxy::x#3 = (unumber)0
Inlining cast gotoxy::y#3 = (unumber)0
Inlining cast ppuDataFetch::size#0 = (unumber)$20
Inlining cast ppuDataTransfer::size#0 = (unumber)$20
Inlining cast ppuDataFill::size#1 = (unumber)$20
Inlining cast uctoa::max_digits#1 = (unumber)3
Inlining cast uctoa::max_digits#2 = (unumber)2
Inlining cast uctoa::max_digits#3 = (unumber)3
Inlining cast uctoa::max_digits#4 = (unumber)8
Inlining cast *uctoa::buffer#2 = (unumber)0
Inlining cast *uctoa::buffer#3 = (unumber)0
Inlining cast uctoa::started#1 = (unumber)1
Inlining cast *main::initNES1_disableVideoOutput1_$0 = (unumber)0
Inlining cast *main::initNES1_disableVideoOutput1_$1 = (unumber)0
Inlining cast *FR_COUNTER = (unumber)$40
Inlining cast *main::initNES1_disableAudioOutput1_$0 = (unumber)$40
Inlining cast (MEMORY+(unumber)0)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$100)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$200)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$300)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$400)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$500)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$600)[main::initNES1_i#2] = (unumber)0
Inlining cast (MEMORY+(unumber)$700)[main::initNES1_i#2] = (unumber)0
Inlining cast ppuDataFill::val#2 = (unumber)0
Inlining cast ppuDataFill::size#2 = (unumber)$40
Inlining cast ppuDataFill::val#3 = (unumber)0
Inlining cast ppuDataFill::size#3 = (unumber)$40
Inlining cast main::screensizex1_return#0 = (unumber)$20
Inlining cast cputcxy::y#0 = (unumber)1
Inlining cast main::screensizey1_return#0 = (unumber)$1e
Inlining cast main::screensizey2_return#0 = (unumber)$1e
Inlining cast cputcxy::x#2 = (unumber)1
Inlining cast main::screensizex2_return#0 = (unumber)$20
Inlining cast main::screensizey3_return#0 = (unumber)$1e
Inlining cast x_scroll = (unumber)0
Inlining cast y_scroll = (unumber)-8
Inlining cast *main::enableVideoOutput1_$0 = (unumber)$80
Inlining cast *main::enableVideoOutput1_$1 = (unumber)$1e
Inlining cast y_scroll = (unumber)0
Inlining cast y_scroll = (unumber)$ef
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 8192
Simplifying constant pointer cast (char *) 9152
Simplifying constant pointer cast (char *) 10176
Simplifying constant pointer cast (char *) 16128
Simplifying constant pointer cast (char *) 8194
Simplifying constant pointer cast (char *) 8199
Simplifying constant pointer cast (char *) 16407
Simplifying constant pointer cast (char *) 0
Simplifying constant pointer cast (struct RICOH_2C02 *) 8192
Simplifying constant pointer cast (struct RICOH_2A03 *) 16384
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $3c0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $1e
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $1e
Simplifying constant integer cast 0
Simplifying constant integer cast $20
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast 3
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast uctoa::value#3
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $100
Simplifying constant integer cast 0
Simplifying constant integer cast $200
Simplifying constant integer cast 0
Simplifying constant integer cast $300
Simplifying constant integer cast 0
Simplifying constant integer cast $400
Simplifying constant integer cast 0
Simplifying constant integer cast $500
Simplifying constant integer cast 0
Simplifying constant integer cast $600
Simplifying constant integer cast 0
Simplifying constant integer cast $700
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast $40
Simplifying constant integer cast $20
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast $1e
Simplifying constant integer cast 4
Simplifying constant integer cast $1e
Simplifying constant integer cast 3
Simplifying constant integer cast 1
Simplifying constant integer cast $20
Simplifying constant integer cast 2
Simplifying constant integer cast $1e
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast -8
Simplifying constant integer cast $80
Simplifying constant integer cast $1e
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $f0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast $ef
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (unsigned int) $3c0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $200
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $300
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $400
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $500
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $600
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $700
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) -8
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $f0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) $ef
Finalized unsigned number type (char) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to char in readJoy1::$2 = *readJoy1::$6 & 1
Inferred type updated to char in readJoy1::$3 = readJoy1::$1 | readJoy1::$2
Inferred type updated to char in uctoa::$4 = uctoa::max_digits#5 - 1
Inferred type updated to char in main::initNES1_waitForVBlank1_$0 = *main::initNES1_waitForVBlank1_$2 & $80
Inferred type updated to char in main::initNES1_waitForVBlank2_$0 = *main::initNES1_waitForVBlank2_$2 & $80
Inferred type updated to char in main::$8 = main::$7 - 1
Inferred type updated to char in main::$12 = main::$11 - 4
Inferred type updated to char in main::$15 = main::$14 - 3
Inferred type updated to char in main::$19 = main::$18 - 2
Inferred type updated to char in main::$23 = main::i#3 & $f
Inversing boolean not [134] gotoxy::$1 = gotoxy::y#4 <= $1e from [133] gotoxy::$0 = gotoxy::y#4 > $1e
Inversing boolean not [138] gotoxy::$3 = gotoxy::x#4 < $20 from [137] gotoxy::$2 = gotoxy::x#4 >= $20
Inversing boolean not [163] cputc::$4 = conio_cursor_x != $20 from [162] cputc::$3 = conio_cursor_x == $20
Inversing boolean not [202] cscroll::$1 = conio_cursor_y != $1e from [201] cscroll::$0 = conio_cursor_y == $1e
Inversing boolean not [332] main::initNES1_waitForVBlank1_$1 = 0 == main::initNES1_waitForVBlank1_$0 from [331] main::initNES1_waitForVBlank1_$4 = 0 != main::initNES1_waitForVBlank1_$0
Inversing boolean not [351] main::initNES1_waitForVBlank2_$1 = 0 == main::initNES1_waitForVBlank2_$0 from [350] main::initNES1_waitForVBlank2_$4 = 0 != main::initNES1_waitForVBlank2_$0
Inversing boolean not [465] vblank::$2 = 0 == vblank::$1 from [464] vblank::$17 = 0 != vblank::$1
Inversing boolean not [470] vblank::$4 = 0 == vblank::$3 from [469] vblank::$18 = 0 != vblank::$3
Inversing boolean not [475] vblank::$10 = y_scroll != $f0 from [474] vblank::$9 = y_scroll == $f0
Inversing boolean not [482] vblank::$6 = 0 == vblank::$5 from [481] vblank::$19 = 0 != vblank::$5
Inversing boolean not [487] vblank::$12 = y_scroll != $ff from [486] vblank::$11 = y_scroll == $ff
Inversing boolean not [494] vblank::$8 = 0 == vblank::$7 from [493] vblank::$20 = 0 != vblank::$7
Successful SSA optimization Pass2UnaryNotSimplification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias readJoy1::joy#2 = readJoy1::joy#4 readJoy1::joy#3 readJoy1::return#0 readJoy1::return#3 readJoy1::return#1 
Alias readJoy1::i#2 = readJoy1::i#3 
Alias readJoy1::joy#1 = readJoy1::$3 
Alias ppuDataFill::ppuDataPrepare1_ppuData#0 = ppuDataFill::ppuData#4 ppuDataFill::ppuDataPrepare1_ppuData#1 
Alias ppuDataFill::size#5 = ppuDataFill::size#7 ppuDataFill::size#9 
Alias ppuDataFill::val#10 = ppuDataFill::val#8 ppuDataFill::val#6 
Alias ppuDataFill::val#4 = ppuDataFill::val#5 ppuDataFill::ppuDataPut1_val#0 ppuDataFill::ppuDataPut1_val#1 ppuDataFill::val#9 ppuDataFill::val#7 
Alias ppuDataFill::i#2 = ppuDataFill::i#5 ppuDataFill::i#4 ppuDataFill::i#3 
Alias ppuDataFill::size#10 = ppuDataFill::size#4 ppuDataFill::size#8 ppuDataFill::size#6 
Alias ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#2 ppuDataTransfer::ppuDataPrepare1_ppuData#1 
Alias ppuDataTransfer::cpuData#2 = ppuDataTransfer::cpuData#3 ppuDataTransfer::cpuData#4 
Alias ppuDataTransfer::size#3 = ppuDataTransfer::size#5 ppuDataTransfer::size#7 
Alias ppuDataTransfer::cpuSrc#2 = ppuDataTransfer::cpuSrc#4 ppuDataTransfer::cpuSrc#5 ppuDataTransfer::cpuSrc#3 
Alias ppuDataTransfer::i#2 = ppuDataTransfer::i#5 ppuDataTransfer::i#4 ppuDataTransfer::i#3 
Alias ppuDataTransfer::size#2 = ppuDataTransfer::size#8 ppuDataTransfer::size#6 ppuDataTransfer::size#4 
Alias ppuDataTransfer::ppuDataPut1_val#0 = ppuDataTransfer::ppuDataPut1_val#1 
Alias ppuDataFetch::ppuDataPrepare1_ppuData#0 = ppuDataFetch::ppuData#1 ppuDataFetch::ppuDataPrepare1_ppuData#1 
Alias ppuDataFetch::cpuData#1 = ppuDataFetch::cpuData#2 ppuDataFetch::cpuData#3 
Alias ppuDataFetch::size#2 = ppuDataFetch::size#4 ppuDataFetch::size#6 
Alias ppuDataFetch::cpuDst#2 = ppuDataFetch::cpuDst#4 ppuDataFetch::cpuDst#5 ppuDataFetch::cpuDst#3 
Alias ppuDataFetch::i#2 = ppuDataFetch::i#5 ppuDataFetch::i#4 ppuDataFetch::i#3 
Alias ppuDataFetch::size#1 = ppuDataFetch::size#7 ppuDataFetch::size#5 ppuDataFetch::size#3 
Alias ppuDataFetch::ppuDataRead1_return#0 = ppuDataFetch::ppuDataRead1_return#2 ppuDataFetch::ppuDataRead1_return#1 ppuDataFetch::ppuDataRead1_return#3 ppuDataFetch::$2 
Alias ppuDataSet::ppuDataPrepare1_ppuData#0 = ppuDataSet::ppuData#1 ppuDataSet::ppuDataPrepare1_ppuData#1 
Alias ppuDataSet::val#1 = ppuDataSet::val#2 ppuDataSet::val#3 ppuDataSet::ppuDataPut1_val#0 ppuDataSet::ppuDataPut1_val#1 
Alias gotoxy::x#6 = gotoxy::x#7 
Alias gotoxy::y#6 = gotoxy::y#7 
Alias cputc::c#2 = cputc::c#3 
Alias cputcxy::c#4 = cputcxy::c#5 
Alias cputs::c#1 = cputs::$0 cputs::c#2 
Alias cputs::s#0 = cputs::s#5 cputs::s#4 
Alias cputsxy::s#1 = cputsxy::s#2 
Alias cscroll::line2#2 = cscroll::line2#4 cscroll::line2#5 cscroll::line2#3 
Alias cscroll::line1#2 = cscroll::line1#4 cscroll::line1#5 cscroll::line1#3 
Alias cscroll::y#2 = cscroll::y#5 cscroll::y#4 cscroll::y#3 
Alias uctoa::value#10 = uctoa::value#8 uctoa::value#12 uctoa::value#13 uctoa::value#9 uctoa::value#14 uctoa::value#15 uctoa::value#11 
Alias uctoa::buffer#10 = uctoa::buffer#17 uctoa::buffer#21 uctoa::buffer#16 uctoa::buffer#18 uctoa::buffer#13 uctoa::buffer#19 uctoa::buffer#20 uctoa::buffer#6 
Alias uctoa::radix#1 = uctoa::radix#2 uctoa::radix#3 uctoa::radix#4 
Alias uctoa::digit_values#10 = uctoa::digit_values#5 uctoa::digit_values#6 uctoa::digit_values#9 
Alias uctoa::digit#2 = uctoa::digit#3 uctoa::digit#6 uctoa::digit#5 
Alias uctoa::value#2 = uctoa::value#5 uctoa::value#3 uctoa::$10 uctoa::value#4 
Alias uctoa::started#2 = uctoa::started#3 
Alias uctoa::buffer#11 = uctoa::buffer#12 uctoa::buffer#7 uctoa::buffer#8 uctoa::buffer#9 
Alias uctoa::max_digits#10 = uctoa::max_digits#8 uctoa::max_digits#5 uctoa::max_digits#9 
Alias uctoa::digit_value#0 = uctoa::digit_value#1 
Alias uctoa_append::return#0 = uctoa_append::return#3 
Alias uctoa::value#0 = uctoa::$9 
Alias uctoa_append::digit#2 = uctoa_append::digit#4 uctoa_append::digit#3 
Alias uctoa_append::value#2 = uctoa_append::value#3 uctoa_append::value#4 uctoa_append::return#1 uctoa_append::return#4 uctoa_append::return#2 
Alias uctoa_append::sub#1 = uctoa_append::sub#2 
Alias uctoa_append::buffer#1 = uctoa_append::buffer#4 uctoa_append::buffer#2 
Alias ppuDataTransfer::size#1 = main::$1 
Alias main::screensizex1_return#0 = main::screensizex1_return#2 main::screensizex1_return#1 main::screensizex1_return#3 main::$7 
Alias main::x#10 = main::x#6 main::x#8 main::x#2 main::x#3 main::x#9 main::x#7 main::x#4 main::x#5 
Alias main::screensizey1_return#0 = main::screensizey1_return#2 main::screensizey1_return#1 main::screensizey1_return#3 main::$11 
Alias cputcxy::y#1 = main::$12 
Alias main::screensizey2_return#0 = main::screensizey2_return#2 main::screensizey2_return#1 main::screensizey2_return#3 main::$14 
Alias main::y#10 = main::y#6 main::y#8 main::y#2 main::y#3 main::y#9 main::y#7 main::y#4 main::y#5 
Alias main::screensizex2_return#0 = main::screensizex2_return#2 main::screensizex2_return#1 main::screensizex2_return#3 main::$18 
Alias cputcxy::x#3 = main::$19 
Alias main::screensizey3_return#0 = main::screensizey3_return#2 main::screensizey3_return#1 main::screensizey3_return#3 main::$21 
Alias main::i#2 = main::i#6 main::i#7 main::i#3 main::i#4 main::i#5 
Alias uctoa::value#1 = main::$23 
Alias readJoy1::return#2 = readJoy1::return#4 
Alias vblank::joy#0 = vblank::joy#4 vblank::joy#5 
Alias vblank::joy#1 = vblank::joy#6 vblank::joy#7 
Alias vblank::joy#2 = vblank::joy#8 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias gotoxy::x#4 = gotoxy::x#6 
Alias gotoxy::y#5 = gotoxy::y#6 
Alias uctoa::value#10 = uctoa::value#7 
Alias uctoa::buffer#10 = uctoa::buffer#15 
Alias uctoa::digit#2 = uctoa::digit#4 
Alias uctoa::max_digits#10 = uctoa::max_digits#6 
Alias uctoa::digit_values#10 = uctoa::digit_values#7 
Alias vblank::joy#0 = vblank::joy#1 vblank::joy#2 vblank::joy#3 
Successful SSA optimization Pass2AliasElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Identical Phi Values ppuDataFill::size#10 ppuDataFill::size#5
Identical Phi Values ppuDataFill::val#4 ppuDataFill::val#10
Identical Phi Values ppuDataTransfer::size#2 ppuDataTransfer::size#3
Identical Phi Values ppuDataFetch::ppuDataPrepare1_ppuData#0 ppuDataFetch::ppuData#0
Identical Phi Values ppuDataFetch::cpuData#1 ppuDataFetch::cpuData#0
Identical Phi Values ppuDataFetch::size#2 ppuDataFetch::size#0
Identical Phi Values ppuDataFetch::size#1 ppuDataFetch::size#2
Identical Phi Values ppuDataSet::ppuDataPrepare1_ppuData#0 ppuDataSet::ppuData#0
Identical Phi Values ppuDataSet::val#1 ppuDataSet::val#0
Identical Phi Values cputs::s#3 cputs::s#1
Identical Phi Values cputsxy::x#1 cputsxy::x#0
Identical Phi Values cputsxy::y#1 cputsxy::y#0
Identical Phi Values cputsxy::s#1 cputsxy::s#0
Identical Phi Values uctoa::radix#1 uctoa::radix#0
Identical Phi Values uctoa::value#10 uctoa::value#1
Identical Phi Values uctoa::buffer#10 uctoa::buffer#5
Identical Phi Values uctoa::max_digits#10 uctoa::max_digits#7
Identical Phi Values uctoa::digit_values#10 uctoa::digit_values#8
Identical Phi Values uctoa_append::value#5 uctoa_append::value#0
Identical Phi Values uctoa_append::sub#3 uctoa_append::sub#0
Identical Phi Values uctoa_append::buffer#3 uctoa_append::buffer#0
Identical Phi Values uctoa_append::sub#1 uctoa_append::sub#3
Identical Phi Values uctoa_append::buffer#1 uctoa_append::buffer#3
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition readJoy1::$0 [10] if(readJoy1::i#2<8) goto readJoy1::@2
Simple Condition ppuDataFill::$1 [30] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::@2
Simple Condition ppuDataTransfer::$1 [49] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2
Simple Condition ppuDataFetch::$1 [71] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1
Simple Condition gotoxy::$1 [102] if(gotoxy::y#4<=$1e) goto gotoxy::@1
Simple Condition gotoxy::$3 [105] if(gotoxy::x#4<$20) goto gotoxy::@2
Simple Condition cputc::$0 [118] if(cputc::c#2=='
') goto cputc::@1
Simple Condition cputc::$4 [126] if(conio_cursor_x!=$20) goto cputc::@return
Simple Condition cputs::$2 [147] if(0!=cputs::c#1) goto cputs::@2
Simple Condition cscroll::$1 [159] if(conio_cursor_y!=$1e) goto cscroll::@return
Simple Condition cscroll::$7 [161] if(0!=conio_scroll_enable) goto cscroll::@3
Simple Condition cscroll::$3 [170] if(cscroll::y#2<(char)$1e-1) goto cscroll::@5
Simple Condition uctoa::$0 [193] if(uctoa::radix#0==DECIMAL) goto uctoa::@1
Simple Condition uctoa::$1 [197] if(uctoa::radix#0==HEXADECIMAL) goto uctoa::@2
Simple Condition uctoa::$2 [201] if(uctoa::radix#0==OCTAL) goto uctoa::@3
Simple Condition uctoa::$3 [205] if(uctoa::radix#0==BINARY) goto uctoa::@4
Simple Condition uctoa::$5 [222] if(uctoa::digit#2<uctoa::$4) goto uctoa::@11
Simple Condition uctoa_append::$0 [245] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
Simple Condition main::initNES1_waitForVBlank1_$1 [266] if(0==main::initNES1_waitForVBlank1_$0) goto main::initNES1_waitForVBlank1_@1
Simple Condition main::initNES1_$5 [279] if(0!=main::initNES1_i#1) goto main::initNES1_@1
Simple Condition main::initNES1_waitForVBlank2_$1 [284] if(0==main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1
Simple Condition main::$9 [304] if(main::x#10<main::$8) goto main::@1
Simple Condition main::$16 [320] if(main::y#10<main::$15) goto main::@3
Simple Condition main::$22 [335] if(main::i#2<main::screensizey3_return#0) goto main::@5
Simple Condition main::$26 [354] if(0!=1) goto main::@7
Simple Condition vblank::$2 [361] if(0==vblank::$1) goto vblank::@1
Simple Condition vblank::$4 [364] if(0==vblank::$3) goto vblank::@2
Simple Condition vblank::$10 [367] if(y_scroll!=$f0) goto vblank::@1
Simple Condition vblank::$6 [371] if(0==vblank::$5) goto vblank::@3
Simple Condition vblank::$12 [374] if(y_scroll!=$ff) goto vblank::@2
Simple Condition vblank::$8 [378] if(0==vblank::$7) goto vblank::@4
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting ! if()-condition to reversed if() [226] uctoa::$8 = ! uctoa::$7
Rewriting || if()-condition to two if()s [225] uctoa::$7 = uctoa::started#2 || uctoa::$6
Successful SSA optimization Pass2ConditionalAndOrRewriting
Warning! Adding boolean cast to non-boolean condition uctoa::started#2
Constant right-side identified [0] readJoy1::$7 = (char *)APU
Constant right-side identified [3] readJoy1::$8 = (char *)APU
Constant right-side identified [12] readJoy1::$9 = (char *)APU
Constant right-side identified [20] ppuDataFill::ppuDataPrepare1_$4 = (char *)PPU
Constant right-side identified [24] ppuDataFill::ppuDataPrepare1_$5 = (char *)PPU
Constant right-side identified [31] ppuDataFill::ppuDataPut1_$1 = (char *)PPU
Constant right-side identified [38] ppuDataTransfer::ppuDataPrepare1_$4 = (char *)PPU
Constant right-side identified [42] ppuDataTransfer::ppuDataPrepare1_$5 = (char *)PPU
Constant right-side identified [51] ppuDataTransfer::ppuDataPut1_$1 = (char *)PPU
Constant right-side identified [59] ppuDataFetch::ppuDataPrepare1_$4 = (char *)PPU
Constant right-side identified [63] ppuDataFetch::ppuDataPrepare1_$5 = (char *)PPU
Constant right-side identified [72] ppuDataFetch::ppuDataRead1_$1 = (char *)PPU
Constant right-side identified [81] ppuDataSet::ppuDataPrepare1_$4 = (char *)PPU
Constant right-side identified [85] ppuDataSet::ppuDataPrepare1_$5 = (char *)PPU
Constant right-side identified [88] ppuDataSet::ppuDataPut1_$1 = (char *)PPU
Constant right-side identified [251] main::initNES1_disableVideoOutput1_$2 = (char *)PPU
Constant right-side identified [254] main::initNES1_disableVideoOutput1_$3 = (char *)PPU
Constant right-side identified [258] main::initNES1_disableAudioOutput1_$1 = (char *)APU
Constant right-side identified [262] main::initNES1_waitForVBlank1_$3 = (volatile char *)PPU
Constant right-side identified [280] main::initNES1_waitForVBlank2_$3 = (volatile char *)PPU
Constant right-side identified [286] ppuDataTransfer::size#1 = sizeof  PALETTE
Constant right-side identified [347] main::enableVideoOutput1_$2 = (char *)PPU
Constant right-side identified [350] main::enableVideoOutput1_$3 = (char *)PPU
Constant right-side identified [380] vblank::$15 = (char *)PPU
Constant right-side identified [383] vblank::$16 = (char *)PPU
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant readJoy1::$7 = (char *)APU
Constant readJoy1::$8 = (char *)APU
Constant readJoy1::joy#0 = 0
Constant readJoy1::i#0 = 0
Constant readJoy1::$9 = (char *)APU
Constant ppuDataFill::ppuDataPrepare1_$4 = (char *)PPU
Constant ppuDataFill::ppuDataPrepare1_$5 = (char *)PPU
Constant ppuDataFill::i#0 = 0
Constant ppuDataFill::ppuDataPut1_$1 = (char *)PPU
Constant ppuDataTransfer::ppuDataPrepare1_$4 = (char *)PPU
Constant ppuDataTransfer::ppuDataPrepare1_$5 = (char *)PPU
Constant ppuDataTransfer::i#0 = 0
Constant ppuDataTransfer::ppuDataPut1_$1 = (char *)PPU
Constant ppuDataFetch::ppuDataPrepare1_$4 = (char *)PPU
Constant ppuDataFetch::ppuDataPrepare1_$5 = (char *)PPU
Constant ppuDataFetch::i#0 = 0
Constant ppuDataFetch::ppuDataRead1_$1 = (char *)PPU
Constant ppuDataSet::ppuDataPrepare1_$4 = (char *)PPU
Constant ppuDataSet::ppuDataPrepare1_$5 = (char *)PPU
Constant ppuDataSet::ppuDataPut1_$1 = (char *)PPU
Constant ppuDataFill::ppuData#0 = (void * const )CONIO_SCREEN_TEXT
Constant ppuDataFill::val#0 = ' '
Constant ppuDataFill::size#0 = $3c0
Constant gotoxy::y#0 = 0
Constant gotoxy::x#0 = 0
Constant cputs::c#0 = 0
Constant cscroll::line1#0 = CONIO_SCREEN_TEXT
Constant cscroll::line2#0 = CONIO_SCREEN_TEXT+$20
Constant cscroll::y#0 = 0
Constant gotoxy::x#3 = 0
Constant gotoxy::y#3 = 0
Constant ppuDataFetch::cpuData#0 = (void * const )conio_cscroll_buffer
Constant ppuDataFetch::size#0 = $20
Constant ppuDataTransfer::cpuData#0 = (void * const )conio_cscroll_buffer
Constant ppuDataTransfer::size#0 = $20
Constant ppuDataFill::ppuData#1 = (void * const )CONIO_SCREEN_TEXT+(unsigned int)$1e*$20-$20
Constant ppuDataFill::val#1 = ' '
Constant ppuDataFill::size#1 = $20
Constant uctoa::max_digits#0 = 0
Constant uctoa::digit_values#0 = (char *) 0
Constant uctoa::max_digits#1 = 3
Constant uctoa::digit_values#1 = RADIX_DECIMAL_VALUES_CHAR
Constant uctoa::max_digits#2 = 2
Constant uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
Constant uctoa::max_digits#3 = 3
Constant uctoa::digit_values#3 = RADIX_OCTAL_VALUES_CHAR
Constant uctoa::max_digits#4 = 8
Constant uctoa::digit_values#4 = RADIX_BINARY_VALUES_CHAR
Constant uctoa::started#0 = 0
Constant uctoa::digit#0 = 0
Constant uctoa::started#1 = 1
Constant uctoa_append::digit#0 = 0
Constant main::initNES1_disableVideoOutput1_$2 = (char *)PPU
Constant main::initNES1_disableVideoOutput1_$3 = (char *)PPU
Constant main::initNES1_disableAudioOutput1_$1 = (char *)APU
Constant main::initNES1_waitForVBlank1_$3 = (volatile char *)PPU
Constant main::initNES1_i#0 = 0
Constant main::initNES1_waitForVBlank2_$3 = (volatile char *)PPU
Constant ppuDataTransfer::size#1 = sizeof PALETTE
Constant ppuDataTransfer::ppuData#1 = (void * const )PPU_PALETTE
Constant ppuDataTransfer::cpuData#1 = (void * const )PALETTE
Constant ppuDataFill::ppuData#2 = (void * const )PPU_ATTRIBUTE_TABLE_0
Constant ppuDataFill::val#2 = 0
Constant ppuDataFill::size#2 = $40
Constant ppuDataFill::ppuData#3 = (void * const )PPU_ATTRIBUTE_TABLE_1
Constant ppuDataFill::val#3 = 0
Constant ppuDataFill::size#3 = $40
Constant main::x#0 = 1
Constant main::screensizex1_return#0 = $20
Constant cputcxy::y#0 = 1
Constant cputcxy::c#0 = '-'
Constant main::screensizey1_return#0 = $1e
Constant cputcxy::c#1 = '-'
Constant main::y#0 = 1
Constant main::screensizey2_return#0 = $1e
Constant cputcxy::x#2 = 1
Constant cputcxy::c#2 = 'i'
Constant main::screensizex2_return#0 = $20
Constant cputcxy::c#3 = 'i'
Constant main::i#0 = 0
Constant main::screensizey3_return#0 = $1e
Constant uctoa::buffer#5 = num_buffer
Constant uctoa::radix#0 = HEXADECIMAL
Constant cputsxy::s#0 = num_buffer
Constant main::enableVideoOutput1_$2 = (char *)PPU
Constant main::enableVideoOutput1_$3 = (char *)PPU
Constant vblank::$15 = (char *)PPU
Constant vblank::$16 = (char *)PPU
Constant conio_scroll_enable = 1
Successful SSA optimization Pass2ConstantIdentification
Constant ppuDataFetch::cpuDst#0 = (char *)ppuDataFetch::cpuData#0
Constant cputs::s#1 = cputsxy::s#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [161] if(0!=conio_scroll_enable) goto cscroll::@3
if() condition always false - eliminating [193] if(uctoa::radix#0==DECIMAL) goto uctoa::@1
if() condition always true - replacing block destination [197] if(uctoa::radix#0==HEXADECIMAL) goto uctoa::@2
if() condition always false - eliminating [201] if(uctoa::radix#0==OCTAL) goto uctoa::@3
if() condition always false - eliminating [205] if(uctoa::radix#0==BINARY) goto uctoa::@4
if() condition always true - replacing block destination [354] if(0!=1) goto main::@7
Successful SSA optimization Pass2ConstantIfs
Rewriting conditional comparison [102] if(gotoxy::y#4<=$1e) goto gotoxy::@1
Converting *(pointer+n) to pointer[n] [2] *readJoy1::$4 = 1  -- readJoy1::$7[OFFSET_STRUCT_RICOH_2A03_JOY1]
Converting *(pointer+n) to pointer[n] [5] *readJoy1::$5 = 0  -- readJoy1::$8[OFFSET_STRUCT_RICOH_2A03_JOY1]
Converting *(pointer+n) to pointer[n] [14] readJoy1::$2 = *readJoy1::$6 & 1  -- readJoy1::$9[OFFSET_STRUCT_RICOH_2A03_JOY1]
Converting *(pointer+n) to pointer[n] [22] *ppuDataFill::ppuDataPrepare1_$2 = ppuDataFill::ppuDataPrepare1_$0  -- ppuDataFill::ppuDataPrepare1_$4[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [26] *ppuDataFill::ppuDataPrepare1_$3 = ppuDataFill::ppuDataPrepare1_$1  -- ppuDataFill::ppuDataPrepare1_$5[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [33] *ppuDataFill::ppuDataPut1_$0 = ppuDataFill::val#10  -- ppuDataFill::ppuDataPut1_$1[OFFSET_STRUCT_RICOH_2C02_PPUDATA]
Converting *(pointer+n) to pointer[n] [40] *ppuDataTransfer::ppuDataPrepare1_$2 = ppuDataTransfer::ppuDataPrepare1_$0  -- ppuDataTransfer::ppuDataPrepare1_$4[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [44] *ppuDataTransfer::ppuDataPrepare1_$3 = ppuDataTransfer::ppuDataPrepare1_$1  -- ppuDataTransfer::ppuDataPrepare1_$5[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [53] *ppuDataTransfer::ppuDataPut1_$0 = ppuDataTransfer::ppuDataPut1_val#0  -- ppuDataTransfer::ppuDataPut1_$1[OFFSET_STRUCT_RICOH_2C02_PPUDATA]
Converting *(pointer+n) to pointer[n] [61] *ppuDataFetch::ppuDataPrepare1_$2 = ppuDataFetch::ppuDataPrepare1_$0  -- ppuDataFetch::ppuDataPrepare1_$4[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [65] *ppuDataFetch::ppuDataPrepare1_$3 = ppuDataFetch::ppuDataPrepare1_$1  -- ppuDataFetch::ppuDataPrepare1_$5[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [74] ppuDataFetch::ppuDataRead1_return#0 = *ppuDataFetch::ppuDataRead1_$0  -- ppuDataFetch::ppuDataRead1_$1[OFFSET_STRUCT_RICOH_2C02_PPUDATA]
Converting *(pointer+n) to pointer[n] [83] *ppuDataSet::ppuDataPrepare1_$2 = ppuDataSet::ppuDataPrepare1_$0  -- ppuDataSet::ppuDataPrepare1_$4[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [87] *ppuDataSet::ppuDataPrepare1_$3 = ppuDataSet::ppuDataPrepare1_$1  -- ppuDataSet::ppuDataPrepare1_$5[OFFSET_STRUCT_RICOH_2C02_PPUADDR]
Converting *(pointer+n) to pointer[n] [90] *ppuDataSet::ppuDataPut1_$0 = ppuDataSet::val#0  -- ppuDataSet::ppuDataPut1_$1[OFFSET_STRUCT_RICOH_2C02_PPUDATA]
Converting *(pointer+n) to pointer[n] [253] *main::initNES1_disableVideoOutput1_$0 = 0  -- main::initNES1_disableVideoOutput1_$2[OFFSET_STRUCT_RICOH_2C02_PPUCTRL]
Converting *(pointer+n) to pointer[n] [256] *main::initNES1_disableVideoOutput1_$1 = 0  -- main::initNES1_disableVideoOutput1_$3[OFFSET_STRUCT_RICOH_2C02_PPUMASK]
Converting *(pointer+n) to pointer[n] [260] *main::initNES1_disableAudioOutput1_$0 = $40  -- main::initNES1_disableAudioOutput1_$1[OFFSET_STRUCT_RICOH_2A03_DMC_FREQ]
Converting *(pointer+n) to pointer[n] [264] main::initNES1_waitForVBlank1_$0 = *main::initNES1_waitForVBlank1_$2 & $80  -- main::initNES1_waitForVBlank1_$3[OFFSET_STRUCT_RICOH_2C02_PPUSTATUS]
Converting *(pointer+n) to pointer[n] [282] main::initNES1_waitForVBlank2_$0 = *main::initNES1_waitForVBlank2_$2 & $80  -- main::initNES1_waitForVBlank2_$3[OFFSET_STRUCT_RICOH_2C02_PPUSTATUS]
Converting *(pointer+n) to pointer[n] [349] *main::enableVideoOutput1_$0 = $80  -- main::enableVideoOutput1_$2[OFFSET_STRUCT_RICOH_2C02_PPUCTRL]
Converting *(pointer+n) to pointer[n] [352] *main::enableVideoOutput1_$1 = $1e  -- main::enableVideoOutput1_$3[OFFSET_STRUCT_RICOH_2C02_PPUMASK]
Converting *(pointer+n) to pointer[n] [382] *vblank::$13 = x_scroll  -- vblank::$15[OFFSET_STRUCT_RICOH_2C02_PPUSCROLL]
Converting *(pointer+n) to pointer[n] [385] *vblank::$14 = y_scroll  -- vblank::$16[OFFSET_STRUCT_RICOH_2C02_PPUSCROLL]
Successful SSA optimization Pass2InlineDerefIdx
Simplifying expression containing zero main::initNES1_disableVideoOutput1_$2 in [252] main::initNES1_disableVideoOutput1_$0 = main::initNES1_disableVideoOutput1_$2 + OFFSET_STRUCT_RICOH_2C02_PPUCTRL
Simplifying expression containing zero main::initNES1_disableVideoOutput1_$2 in [253] main::initNES1_disableVideoOutput1_$2[OFFSET_STRUCT_RICOH_2C02_PPUCTRL] = 0
Simplifying expression containing zero MEMORY in [269] (MEMORY+0)[main::initNES1_i#2] = 0
Simplifying expression containing zero main::enableVideoOutput1_$2 in [348] main::enableVideoOutput1_$0 = main::enableVideoOutput1_$2 + OFFSET_STRUCT_RICOH_2C02_PPUCTRL
Simplifying expression containing zero main::enableVideoOutput1_$2 in [349] main::enableVideoOutput1_$2[OFFSET_STRUCT_RICOH_2C02_PPUCTRL] = $80
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating variable uctoa::buffer#0 from unused block uctoa::@9
Eliminating variable uctoa::buffer#1 from unused block uctoa::@9
Eliminating variable uctoa::buffer#2 from unused block uctoa::@9
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
Removing PHI-reference to removed block (cscroll::@2) in block gotoxy
Removing unused block cscroll::@2
Removing unused block cscroll::@7
Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5
Removing PHI-reference to removed block (uctoa::@1) in block uctoa::@5
Removing unused block uctoa::@1
Removing unused block uctoa::@7
Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5
Removing PHI-reference to removed block (uctoa::@3) in block uctoa::@5
Removing unused block uctoa::@3
Removing unused block uctoa::@8
Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5
Removing PHI-reference to removed block (uctoa::@4) in block uctoa::@5
Removing unused block uctoa::@4
Removing unused block uctoa::@9
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused variable readJoy1::$4 and assignment [0] readJoy1::$4 = readJoy1::$7 + OFFSET_STRUCT_RICOH_2A03_JOY1
Eliminating unused variable readJoy1::$5 and assignment [2] readJoy1::$5 = readJoy1::$8 + OFFSET_STRUCT_RICOH_2A03_JOY1
Eliminating unused variable readJoy1::$6 and assignment [7] readJoy1::$6 = readJoy1::$9 + OFFSET_STRUCT_RICOH_2A03_JOY1
Eliminating unused variable ppuDataFill::ppuDataPrepare1_$2 and assignment [14] ppuDataFill::ppuDataPrepare1_$2 = ppuDataFill::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataFill::ppuDataPrepare1_$3 and assignment [17] ppuDataFill::ppuDataPrepare1_$3 = ppuDataFill::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataFill::ppuDataPut1_$0 and assignment [21] ppuDataFill::ppuDataPut1_$0 = ppuDataFill::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
Eliminating unused variable ppuDataTransfer::ppuDataPrepare1_$2 and assignment [27] ppuDataTransfer::ppuDataPrepare1_$2 = ppuDataTransfer::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataTransfer::ppuDataPrepare1_$3 and assignment [30] ppuDataTransfer::ppuDataPrepare1_$3 = ppuDataTransfer::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataTransfer::ppuDataPut1_$0 and assignment [36] ppuDataTransfer::ppuDataPut1_$0 = ppuDataTransfer::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
Eliminating unused variable ppuDataFetch::ppuDataPrepare1_$2 and assignment [42] ppuDataFetch::ppuDataPrepare1_$2 = ppuDataFetch::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataFetch::ppuDataPrepare1_$3 and assignment [45] ppuDataFetch::ppuDataPrepare1_$3 = ppuDataFetch::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataFetch::ppuDataRead1_$0 and assignment [50] ppuDataFetch::ppuDataRead1_$0 = ppuDataFetch::ppuDataRead1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
Eliminating unused variable ppuDataSet::ppuDataPrepare1_$2 and assignment [57] ppuDataSet::ppuDataPrepare1_$2 = ppuDataSet::ppuDataPrepare1_$4 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataSet::ppuDataPrepare1_$3 and assignment [60] ppuDataSet::ppuDataPrepare1_$3 = ppuDataSet::ppuDataPrepare1_$5 + OFFSET_STRUCT_RICOH_2C02_PPUADDR
Eliminating unused variable ppuDataSet::ppuDataPut1_$0 and assignment [62] ppuDataSet::ppuDataPut1_$0 = ppuDataSet::ppuDataPut1_$1 + OFFSET_STRUCT_RICOH_2C02_PPUDATA
Eliminating unused variable main::initNES1_disableVideoOutput1_$0 and assignment [159] main::initNES1_disableVideoOutput1_$0 = main::initNES1_disableVideoOutput1_$2
Eliminating unused variable main::initNES1_disableVideoOutput1_$1 and assignment [161] main::initNES1_disableVideoOutput1_$1 = main::initNES1_disableVideoOutput1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUMASK
Eliminating unused variable main::initNES1_disableAudioOutput1_$0 and assignment [164] main::initNES1_disableAudioOutput1_$0 = main::initNES1_disableAudioOutput1_$1 + OFFSET_STRUCT_RICOH_2A03_DMC_FREQ
Eliminating unused variable main::initNES1_waitForVBlank1_$2 and assignment [167] main::initNES1_waitForVBlank1_$2 = main::initNES1_waitForVBlank1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
Eliminating unused variable main::initNES1_waitForVBlank2_$2 and assignment [181] main::initNES1_waitForVBlank2_$2 = main::initNES1_waitForVBlank2_$3 + OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
Eliminating unused variable main::enableVideoOutput1_$0 and assignment [217] main::enableVideoOutput1_$0 = main::enableVideoOutput1_$2
Eliminating unused variable main::enableVideoOutput1_$1 and assignment [219] main::enableVideoOutput1_$1 = main::enableVideoOutput1_$3 + OFFSET_STRUCT_RICOH_2C02_PPUMASK
Eliminating unused variable vblank::$13 and assignment [239] vblank::$13 = vblank::$15 + OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
Eliminating unused variable vblank::$14 and assignment [241] vblank::$14 = vblank::$16 + OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
Eliminating unused constant gotoxy::x#3
Eliminating unused constant gotoxy::y#3
Eliminating unused constant cputs::c#0
Eliminating unused constant BINARY
Eliminating unused constant OCTAL
Eliminating unused constant DECIMAL
Eliminating unused constant uctoa::max_digits#0
Eliminating unused constant uctoa::digit_values#0
Eliminating unused constant uctoa::max_digits#1
Eliminating unused constant uctoa::digit_values#1
Eliminating unused constant uctoa::max_digits#3
Eliminating unused constant uctoa::digit_values#3
Eliminating unused constant uctoa::max_digits#4
Eliminating unused constant uctoa::digit_values#4
Eliminating unused constant uctoa::radix#0
Eliminating unused constant OFFSET_STRUCT_RICOH_2C02_PPUCTRL
Eliminating unused constant conio_scroll_enable
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant HEXADECIMAL
Eliminating unused constant RADIX_BINARY_VALUES_CHAR
Eliminating unused constant RADIX_OCTAL_VALUES_CHAR
Eliminating unused constant RADIX_DECIMAL_VALUES_CHAR
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) $1e+1 in if(gotoxy::y#4<$1e+1) goto gotoxy::@1
Adding number conversion cast (unumber) 1 in if(gotoxy::y#4<(unumber)$1e+1) goto gotoxy::@1
Adding number conversion cast (unumber) 0 in uctoa::$11 = 0 != uctoa::started#2
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $1e+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Resolving array sizeof() sizeof PALETTE
Successful SSA optimization PassNSizeOfSimplification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Identical Phi Values uctoa::max_digits#7 uctoa::max_digits#2
Identical Phi Values uctoa::digit_values#8 uctoa::digit_values#2
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition uctoa::$11 [124] if(0!=uctoa::started#2) goto uctoa::@14
Simple Condition uctoa::$6 [228] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@14
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [119] uctoa::$4 = uctoa::max_digits#2 - 1
Constant right-side identified [170] main::$8 = main::screensizex1_return#0 - 1
Constant right-side identified [174] cputcxy::y#1 = main::screensizey1_return#0 - 4
Constant right-side identified [179] main::$15 = main::screensizey2_return#0 - 3
Constant right-side identified [183] cputcxy::x#3 = main::screensizex2_return#0 - 2
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant uctoa::$4 = uctoa::max_digits#2-1
Constant main::$8 = main::screensizex1_return#0-1
Constant cputcxy::y#1 = main::screensizey1_return#0-4
Constant main::$15 = main::screensizey2_return#0-3
Constant cputcxy::x#3 = main::screensizex2_return#0-2
Successful SSA optimization Pass2ConstantIdentification
Adding number conversion cast (unumber) $20 in 
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $20
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) $20
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Inlining Noop Cast [24] ppuDataTransfer::cpuSrc#0 = (char *)ppuDataTransfer::cpuData#2 keeping ppuDataTransfer::cpuData#2
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [71] ppuDataSet::ppuData#0 = (void * const )cputc::$1 keeping ppuDataSet::ppuData#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [63] gotoxy::line_offset#0 = gotoxy::$6 * $20
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings readJoy1::joy#0
Inlining constant with var siblings readJoy1::i#0
Inlining constant with var siblings ppuDataFill::i#0
Inlining constant with different constant siblings ppuDataFill::ppuData#0
Inlining constant with var siblings ppuDataFill::val#0
Inlining constant with var siblings ppuDataFill::size#0
Inlining constant with different constant siblings ppuDataFill::ppuData#1
Inlining constant with var siblings ppuDataFill::val#1
Inlining constant with var siblings ppuDataFill::size#1
Inlining constant with different constant siblings ppuDataFill::ppuData#2
Inlining constant with var siblings ppuDataFill::val#2
Inlining constant with var siblings ppuDataFill::size#2
Inlining constant with different constant siblings ppuDataFill::ppuData#3
Inlining constant with var siblings ppuDataFill::val#3
Inlining constant with var siblings ppuDataFill::size#3
Inlining constant with var siblings ppuDataTransfer::i#0
Inlining constant with var siblings ppuDataTransfer::cpuData#0
Inlining constant with var siblings ppuDataTransfer::size#0
Inlining constant with var siblings ppuDataTransfer::size#1
Inlining constant with var siblings ppuDataTransfer::ppuData#1
Inlining constant with var siblings ppuDataTransfer::cpuData#1
Inlining constant with var siblings ppuDataFetch::i#0
Inlining constant with var siblings ppuDataFetch::cpuDst#0
Inlining constant with var siblings gotoxy::y#0
Inlining constant with var siblings gotoxy::x#0
Inlining constant with var siblings cputcxy::y#0
Inlining constant with var siblings cputcxy::c#0
Inlining constant with var siblings cputcxy::c#1
Inlining constant with var siblings cputcxy::x#2
Inlining constant with var siblings cputcxy::c#2
Inlining constant with var siblings cputcxy::c#3
Inlining constant with var siblings cputcxy::y#1
Inlining constant with var siblings cputcxy::x#3
Inlining constant with var siblings cputs::s#1
Inlining constant with var siblings cscroll::line1#0
Inlining constant with var siblings cscroll::line2#0
Inlining constant with var siblings cscroll::y#0
Inlining constant with var siblings uctoa::started#0
Inlining constant with var siblings uctoa::digit#0
Inlining constant with var siblings uctoa::started#1
Inlining constant with var siblings uctoa::buffer#5
Inlining constant with var siblings uctoa_append::digit#0
Inlining constant with var siblings main::initNES1_i#0
Inlining constant with var siblings main::x#0
Inlining constant with var siblings main::y#0
Inlining constant with var siblings main::i#0
Constant inlined uctoa_append::digit#0 = 0
Constant inlined ppuDataTransfer::i#0 = 0
Constant inlined cputs::s#1 = num_buffer
Constant inlined main::$15 = main::screensizey2_return#0-3
Constant inlined cputcxy::y#0 = 1
Constant inlined cputcxy::y#1 = main::screensizey1_return#0-4
Constant inlined main::initNES1_waitForVBlank2_$3 = (volatile char *)PPU
Constant inlined ppuDataFetch::ppuDataPrepare1_$4 = (char *)PPU
Constant inlined ppuDataFetch::ppuDataPrepare1_$5 = (char *)PPU
Constant inlined CONIO_SCREEN_TEXT = PPU_NAME_TABLE_0
Constant inlined ppuDataFill::ppuDataPrepare1_$4 = (char *)PPU
Constant inlined ppuDataTransfer::ppuDataPrepare1_$5 = (char *)PPU
Constant inlined ppuDataFill::ppuDataPrepare1_$5 = (char *)PPU
Constant inlined ppuDataTransfer::ppuDataPrepare1_$4 = (char *)PPU
Constant inlined ppuDataFill::ppuData#1 = (void * const )PPU_NAME_TABLE_0+(unsigned int)$1e*$20-$20
Constant inlined ppuDataFill::ppuData#0 = (void * const )PPU_NAME_TABLE_0
Constant inlined ppuDataFill::ppuData#3 = (void * const )PPU_ATTRIBUTE_TABLE_1
Constant inlined ppuDataFill::ppuData#2 = (void * const )PPU_ATTRIBUTE_TABLE_0
Constant inlined cscroll::line1#0 = PPU_NAME_TABLE_0
Constant inlined uctoa::digit#0 = 0
Constant inlined vblank::$15 = (char *)PPU
Constant inlined vblank::$16 = (char *)PPU
Constant inlined main::initNES1_i#0 = 0
Constant inlined main::y#0 = 1
Constant inlined gotoxy::x#0 = 0
Constant inlined ppuDataSet::ppuDataPrepare1_$5 = (char *)PPU
Constant inlined ppuDataSet::ppuDataPrepare1_$4 = (char *)PPU
Constant inlined ppuDataFill::i#0 = 0
Constant inlined ppuDataFetch::ppuDataRead1_$1 = (char *)PPU
Constant inlined uctoa::$4 = uctoa::max_digits#2-1
Constant inlined uctoa::digit_values#2 = RADIX_HEXADECIMAL_VALUES_CHAR
Constant inlined uctoa::started#0 = 0
Constant inlined uctoa::started#1 = 1
Constant inlined main::enableVideoOutput1_$3 = (char *)PPU
Constant inlined ppuDataFill::val#3 = 0
Constant inlined cputcxy::x#3 = main::screensizex2_return#0-2
Constant inlined main::enableVideoOutput1_$2 = (char *)PPU
Constant inlined readJoy1::i#0 = 0
Constant inlined ppuDataFill::val#2 = 0
Constant inlined ppuDataTransfer::ppuDataPut1_$1 = (char *)PPU
Constant inlined ppuDataFill::val#1 = ' '
Constant inlined ppuDataFill::ppuDataPut1_$1 = (char *)PPU
Constant inlined ppuDataFill::val#0 = ' '
Constant inlined cputcxy::x#2 = 1
Constant inlined cputsxy::s#0 = num_buffer
Constant inlined ppuDataFetch::cpuDst#0 = (char *)ppuDataFetch::cpuData#0
Constant inlined main::i#0 = 0
Constant inlined main::initNES1_disableVideoOutput1_$3 = (char *)PPU
Constant inlined main::initNES1_disableVideoOutput1_$2 = (char *)PPU
Constant inlined main::initNES1_disableAudioOutput1_$1 = (char *)APU
Constant inlined readJoy1::joy#0 = 0
Constant inlined ppuDataTransfer::cpuData#1 = (void * const )PALETTE
Constant inlined cscroll::y#0 = 0
Constant inlined cscroll::line2#0 = PPU_NAME_TABLE_0+$20
Constant inlined ppuDataTransfer::cpuData#0 = (void * const )conio_cscroll_buffer
Constant inlined ppuDataTransfer::ppuData#1 = (void * const )PPU_PALETTE
Constant inlined cputcxy::c#3 = 'i'
Constant inlined cputcxy::c#2 = 'i'
Constant inlined cputcxy::c#1 = '-'
Constant inlined cputcxy::c#0 = '-'
Constant inlined ppuDataTransfer::size#1 = $20*SIZEOF_CHAR
Constant inlined main::x#0 = 1
Constant inlined ppuDataTransfer::size#0 = $20
Constant inlined uctoa::buffer#5 = num_buffer
Constant inlined readJoy1::$9 = (char *)APU
Constant inlined ppuDataFetch::i#0 = 0
Constant inlined gotoxy::y#0 = 0
Constant inlined main::initNES1_waitForVBlank1_$3 = (volatile char *)PPU
Constant inlined ppuDataSet::ppuDataPut1_$1 = (char *)PPU
Constant inlined ppuDataFill::size#1 = $20
Constant inlined ppuDataFill::size#0 = $3c0
Constant inlined readJoy1::$7 = (char *)APU
Constant inlined ppuDataFill::size#3 = $40
Constant inlined readJoy1::$8 = (char *)APU
Constant inlined main::$8 = main::screensizex1_return#0-1
Constant inlined ppuDataFill::size#2 = $40
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1)
Consolidated array index constant in *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1)
Consolidated array index constant in *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK)
Consolidated array index constant in *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ)
Consolidated array index constant in *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS)
Consolidated array index constant in *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL)
Consolidated array index constant in *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL)
Successful SSA optimization Pass2ConstantAdditionElimination
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $1e
Finalized unsigned number type (char) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast $1e-1
Successful SSA optimization PassNCastSimplification
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Alias candidate removed (volatile)conio_line_text = gotoxy::$5 
Added new block during phi lifting gotoxy::@5(between gotoxy and gotoxy::@1)
Added new block during phi lifting gotoxy::@6(between gotoxy::@1 and gotoxy::@2)
Added new block during phi lifting uctoa::@17(between uctoa::@16 and uctoa::@13)
Added new block during phi lifting main::@24(between main::initNES1_@1 and main::initNES1_@1)
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of __start::@2
Adding NOP phi() at start of vblank
Adding NOP phi() at start of main
Adding NOP phi() at start of main::initNES1_waitForVBlank1
Adding NOP phi() at start of main::initNES1_@6
Adding NOP phi() at start of main::initNES1_waitForVBlank2
Adding NOP phi() at start of main::@8
Adding NOP phi() at start of main::@14
Adding NOP phi() at start of main::@15
Adding NOP phi() at start of main::@16
Adding NOP phi() at start of main::@17
Adding NOP phi() at start of main::screensizex1_@return
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::screensizey2_@return
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::screensizey3_@return
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@20
Adding NOP phi() at start of main::screensizex2
Adding NOP phi() at start of main::screensizex2_@return
Adding NOP phi() at start of main::@18
Adding NOP phi() at start of main::screensizey1
Adding NOP phi() at start of main::screensizey1_@return
Adding NOP phi() at start of readJoy1::@3
Adding NOP phi() at start of ppuDataFill::@3
Adding NOP phi() at start of ppuDataFill::@2
Adding NOP phi() at start of clrscr
Adding NOP phi() at start of uctoa
Adding NOP phi() at start of uctoa::@6
Adding NOP phi() at start of uctoa::@2
Adding NOP phi() at start of cputsxy::@1
Adding NOP phi() at start of cputsxy::@2
Adding NOP phi() at start of cputcxy::@2
Adding NOP phi() at start of gotoxy::@3
Adding NOP phi() at start of gotoxy::@4
Adding NOP phi() at start of cputs
Adding NOP phi() at start of cputc::@3
Adding NOP phi() at start of cputc::@6
Adding NOP phi() at start of cputc::@1
Adding NOP phi() at start of cputc::@4
Adding NOP phi() at start of ppuDataSet
Adding NOP phi() at start of ppuDataSet::@1
Adding NOP phi() at start of cputln::@1
Adding NOP phi() at start of cscroll::@1
Adding NOP phi() at start of cscroll::@3
Adding NOP phi() at start of cscroll::@6
Adding NOP phi() at start of ppuDataFetch
Adding NOP phi() at start of ppuDataFetch::ppuDataRead1_@return
CALL GRAPH
Calls in [__start] to main:7 
Calls in [vblank] to readJoy1:11 
Calls in [main] to ppuDataTransfer:60 ppuDataFill:62 ppuDataFill:64 clrscr:66 uctoa:85 cputsxy:88 cputcxy:93 cputcxy:99 cputcxy:104 cputcxy:110 
Calls in [clrscr] to ppuDataFill:155 
Calls in [uctoa] to uctoa_append:185 
Calls in [cputsxy] to gotoxy:195 cputs:197 
Calls in [cputcxy] to gotoxy:205 cputc:208 
Calls in [cputs] to cputc:244 
Calls in [cputc] to ppuDataSet:250 cputln:254 cputln:258 
Calls in [cputln] to cscroll:271 
Calls in [cscroll] to ppuDataFill:280 ppuDataFetch:285 ppuDataTransfer:288 

Created 38 initial phi equivalence classes
Coalesced [90] main::i#8 = main::i#1
Coalesced [92] cputcxy::y#6 = cputcxy::y#2
Coalesced [98] cputcxy::y#5 = cputcxy::y#3
Coalesced [101] main::y#11 = main::y#1
Coalesced [103] cputcxy::x#5 = cputcxy::x#0
Coalesced [109] cputcxy::x#6 = cputcxy::x#1
Coalesced [112] main::x#11 = main::x#1
Coalesced [113] main::initNES1_i#3 = main::initNES1_i#1
Coalesced [124] readJoy1::i#4 = readJoy1::i#1
Coalesced [125] readJoy1::joy#5 = readJoy1::joy#1
Coalesced [139] ppuDataTransfer::i#6 = ppuDataTransfer::i#1
Coalesced [140] ppuDataTransfer::cpuSrc#7 = ppuDataTransfer::cpuSrc#1
Coalesced [153] ppuDataFill::i#6 = ppuDataFill::i#1
Coalesced [163] uctoa::value#17 = uctoa::value#1
Coalesced [173] uctoa::value#18 = uctoa::value#2
Coalesced [174] uctoa::started#6 = uctoa::started#2
Coalesced [175] uctoa::buffer#23 = uctoa::buffer#11
Coalesced [178] uctoa::digit#7 = uctoa::digit#1
Coalesced (already) [179] uctoa::value#16 = uctoa::value#6
Coalesced (already) [180] uctoa::started#5 = uctoa::started#4
Coalesced (already) [181] uctoa::buffer#22 = uctoa::buffer#14
Coalesced [189] uctoa::value#19 = uctoa::value#0
Coalesced [190] uctoa::buffer#24 = uctoa::buffer#4
Coalesced [193] gotoxy::y#9 = gotoxy::y#2
Coalesced [194] gotoxy::x#9 = gotoxy::x#2
Coalesced [203] gotoxy::y#8 = gotoxy::y#1
Coalesced [204] gotoxy::x#8 = gotoxy::x#1
Coalesced [207] cputc::c#4 = cputc::c#0
Coalesced [211] uctoa_append::value#6 = uctoa_append::value#0
Coalesced [218] uctoa_append::value#7 = uctoa_append::value#1
Coalesced [219] uctoa_append::digit#5 = uctoa_append::digit#1
Coalesced [234] gotoxy::x#10 = gotoxy::x#4
Coalesced [235] gotoxy::y#10 = gotoxy::y#4
Coalesced [243] cputc::c#5 = cputc::c#1
Coalesced [245] cputs::s#6 = cputs::s#0
Coalesced [287] ppuDataTransfer::ppuDataPrepare1_ppuData#2 = ppuDataTransfer::ppuData#0
Coalesced [292] cscroll::y#6 = cscroll::y#1
Coalesced [293] cscroll::line2#6 = cscroll::line2#1
Coalesced [294] cscroll::line1#6 = cscroll::line1#1
Coalesced [309] ppuDataFetch::i#6 = ppuDataFetch::i#1
Coalesced [310] ppuDataFetch::cpuDst#6 = ppuDataFetch::cpuDst#1
Coalesced down to 33 phi equivalence classes
Culled Empty Block label __start::@2
Culled Empty Block label main::initNES1_@6
Culled Empty Block label main::@17
Culled Empty Block label main::screensizex1_@return
Culled Empty Block label main::@2
Culled Empty Block label main::screensizey2_@return
Culled Empty Block label main::@4
Culled Empty Block label main::screensizey3_@return
Culled Empty Block label main::@20
Culled Empty Block label main::screensizex2_@return
Culled Empty Block label main::@18
Culled Empty Block label main::screensizey1_@return
Culled Empty Block label main::@24
Culled Empty Block label readJoy1::@3
Culled Empty Block label ppuDataFill::@3
Culled Empty Block label ppuDataFill::@2
Culled Empty Block label uctoa::@6
Culled Empty Block label uctoa::@2
Culled Empty Block label uctoa::@5
Culled Empty Block label uctoa::@17
Culled Empty Block label cputsxy::@2
Culled Empty Block label cputcxy::@2
Culled Empty Block label gotoxy::@3
Culled Empty Block label gotoxy::@4
Culled Empty Block label cputs::@3
Culled Empty Block label cputc::@6
Culled Empty Block label cputc::@4
Culled Empty Block label ppuDataSet::@1
Culled Empty Block label cputln::@1
Culled Empty Block label cscroll::@1
Culled Empty Block label cscroll::@3
Culled Empty Block label ppuDataFetch::ppuDataRead1_@return
Renumbering block ppuDataFill::@4 to ppuDataFill::@2
Renumbering block gotoxy::@5 to gotoxy::@3
Renumbering block gotoxy::@6 to gotoxy::@4
Renumbering block cputc::@5 to cputc::@4
Renumbering block cscroll::@4 to cscroll::@1
Renumbering block cscroll::@5 to cscroll::@2
Renumbering block cscroll::@6 to cscroll::@3
Renumbering block cscroll::@8 to cscroll::@4
Renumbering block cscroll::@9 to cscroll::@5
Renumbering block cscroll::@10 to cscroll::@6
Renumbering block uctoa::@10 to uctoa::@1
Renumbering block uctoa::@11 to uctoa::@2
Renumbering block uctoa::@12 to uctoa::@3
Renumbering block uctoa::@13 to uctoa::@4
Renumbering block uctoa::@14 to uctoa::@5
Renumbering block uctoa::@15 to uctoa::@6
Renumbering block uctoa::@16 to uctoa::@7
Renumbering block main::@3 to main::@2
Renumbering block main::@5 to main::@3
Renumbering block main::@6 to main::@4
Renumbering block main::@7 to main::@5
Renumbering block main::@8 to main::@6
Renumbering block main::@9 to main::@7
Renumbering block main::@10 to main::@8
Renumbering block main::@11 to main::@9
Renumbering block main::@12 to main::@10
Renumbering block main::@13 to main::@11
Renumbering block main::@14 to main::@12
Renumbering block main::@15 to main::@13
Renumbering block main::@16 to main::@14
Renumbering block main::@19 to main::@15
Renumbering block main::@21 to main::@16
Renumbering block main::@22 to main::@17
Renumbering block main::@23 to main::@18
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of vblank
Adding NOP phi() at start of main
Adding NOP phi() at start of main::initNES1_waitForVBlank1
Adding NOP phi() at start of main::initNES1_waitForVBlank2
Adding NOP phi() at start of main::@6
Adding NOP phi() at start of main::@12
Adding NOP phi() at start of main::@13
Adding NOP phi() at start of main::@14
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::screensizex2
Adding NOP phi() at start of main::screensizey1
Adding NOP phi() at start of clrscr
Adding NOP phi() at start of uctoa
Adding NOP phi() at start of cputsxy::@1
Adding NOP phi() at start of uctoa_append
Adding NOP phi() at start of gotoxy::@3
Adding NOP phi() at start of gotoxy::@4
Adding NOP phi() at start of cputs
Adding NOP phi() at start of cputc::@3
Adding NOP phi() at start of cputc::@1
Adding NOP phi() at start of ppuDataSet
Adding NOP phi() at start of cscroll::@3
Adding NOP phi() at start of ppuDataFetch

FINAL CONTROL FLOW GRAPH

void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] conio_cursor_x = 0
  [2] conio_cursor_y = 0
  [3] conio_line_text = PPU_NAME_TABLE_0
  [4] x_scroll = 0
  [5] y_scroll = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [6] phi()
  [7] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [8] return 
  to:@return

__interrupt(hardware_all) void vblank()
vblank: scope:[vblank]  from
  [9] phi()
  [10] call readJoy1
  [11] readJoy1::return#2 = readJoy1::joy#2
  to:vblank::@11
vblank::@11: scope:[vblank]  from vblank
  [12] vblank::joy#0 = readJoy1::return#2
  [13] vblank::$1 = vblank::joy#0 & JOY_DOWN
  [14] if(0==vblank::$1) goto vblank::@1
  to:vblank::@5
vblank::@5: scope:[vblank]  from vblank::@11
  [15] y_scroll = ++ y_scroll
  [16] if(y_scroll!=$f0) goto vblank::@1
  to:vblank::@6
vblank::@6: scope:[vblank]  from vblank::@5
  [17] y_scroll = 0
  to:vblank::@1
vblank::@1: scope:[vblank]  from vblank::@11 vblank::@5 vblank::@6
  [18] vblank::$3 = vblank::joy#0 & JOY_UP
  [19] if(0==vblank::$3) goto vblank::@2
  to:vblank::@7
vblank::@7: scope:[vblank]  from vblank::@1
  [20] y_scroll = -- y_scroll
  [21] if(y_scroll!=$ff) goto vblank::@2
  to:vblank::@8
vblank::@8: scope:[vblank]  from vblank::@7
  [22] y_scroll = $ef
  to:vblank::@2
vblank::@2: scope:[vblank]  from vblank::@1 vblank::@7 vblank::@8
  [23] vblank::$5 = vblank::joy#0 & JOY_LEFT
  [24] if(0==vblank::$5) goto vblank::@3
  to:vblank::@9
vblank::@9: scope:[vblank]  from vblank::@2
  [25] x_scroll = ++ x_scroll
  to:vblank::@3
vblank::@3: scope:[vblank]  from vblank::@2 vblank::@9
  [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT
  [27] if(0==vblank::$7) goto vblank::@4
  to:vblank::@10
vblank::@10: scope:[vblank]  from vblank::@3
  [28] x_scroll = -- x_scroll
  to:vblank::@4
vblank::@4: scope:[vblank]  from vblank::@10 vblank::@3
  [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll
  [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll
  to:vblank::@return
vblank::@return: scope:[vblank]  from vblank::@4
  [31] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  [32] phi()
  to:main::initNES1
main::initNES1: scope:[main]  from main
  asm { cld ldx#$ff txs  }
  to:main::initNES1_disableVideoOutput1
main::initNES1_disableVideoOutput1: scope:[main]  from main::initNES1
  [34] *((char *)PPU) = 0
  [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0
  to:main::initNES1_disableAudioOutput1
main::initNES1_disableAudioOutput1: scope:[main]  from main::initNES1_disableVideoOutput1
  [36] *FR_COUNTER = $40
  [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40
  to:main::initNES1_clearVBlankFlag1
main::initNES1_clearVBlankFlag1: scope:[main]  from main::initNES1_disableAudioOutput1
  asm { ldaPPU_PPUSTATUS  }
  to:main::initNES1_waitForVBlank1
main::initNES1_waitForVBlank1: scope:[main]  from main::initNES1_clearVBlankFlag1
  [39] phi()
  to:main::initNES1_waitForVBlank1_@1
main::initNES1_waitForVBlank1_@1: scope:[main]  from main::initNES1_waitForVBlank1 main::initNES1_waitForVBlank1_@1
  [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80
  [41] if(0==main::initNES1_waitForVBlank1_$0) goto main::initNES1_waitForVBlank1_@1
  to:main::initNES1_@1
main::initNES1_@1: scope:[main]  from main::initNES1_@1 main::initNES1_waitForVBlank1_@1
  [42] main::initNES1_i#2 = phi( main::initNES1_@1/main::initNES1_i#1, main::initNES1_waitForVBlank1_@1/0 )
  [43] MEMORY[main::initNES1_i#2] = 0
  [44] (MEMORY+$100)[main::initNES1_i#2] = 0
  [45] (MEMORY+$200)[main::initNES1_i#2] = 0
  [46] (MEMORY+$300)[main::initNES1_i#2] = 0
  [47] (MEMORY+$400)[main::initNES1_i#2] = 0
  [48] (MEMORY+$500)[main::initNES1_i#2] = 0
  [49] (MEMORY+$600)[main::initNES1_i#2] = 0
  [50] (MEMORY+$700)[main::initNES1_i#2] = 0
  [51] main::initNES1_i#1 = ++ main::initNES1_i#2
  [52] if(0!=main::initNES1_i#1) goto main::initNES1_@1
  to:main::initNES1_waitForVBlank2
main::initNES1_waitForVBlank2: scope:[main]  from main::initNES1_@1
  [53] phi()
  to:main::initNES1_waitForVBlank2_@1
main::initNES1_waitForVBlank2_@1: scope:[main]  from main::initNES1_waitForVBlank2 main::initNES1_waitForVBlank2_@1
  [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80
  [55] if(0==main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1
  to:main::initNES1_@7
main::initNES1_@7: scope:[main]  from main::initNES1_waitForVBlank2_@1
  asm { ldaPPU_PPUSTATUS  }
  to:main::@6
main::@6: scope:[main]  from main::initNES1_@7
  [57] phi()
  [58] call ppuDataTransfer
  to:main::@12
main::@12: scope:[main]  from main::@6
  [59] phi()
  [60] call ppuDataFill
  to:main::@13
main::@13: scope:[main]  from main::@12
  [61] phi()
  [62] call ppuDataFill
  to:main::@14
main::@14: scope:[main]  from main::@13
  [63] phi()
  [64] call clrscr
  to:main::screensizex1
main::screensizex1: scope:[main]  from main::@14 main::@15
  [65] main::x#10 = phi( main::@14/1, main::@15/main::x#1 )
  to:main::@7
main::@7: scope:[main]  from main::screensizex1
  [66] if(main::x#10<main::screensizex1_return#0-1) goto main::@1
  to:main::screensizey2
main::screensizey2: scope:[main]  from main::@16 main::@7
  [67] main::y#10 = phi( main::@7/1, main::@16/main::y#1 )
  to:main::@9
main::@9: scope:[main]  from main::screensizey2
  [68] if(main::y#10<main::screensizey2_return#0-3) goto main::@2
  to:main::screensizey3
main::screensizey3: scope:[main]  from main::@18 main::@9
  [69] main::i#2 = phi( main::@18/main::i#1, main::@9/0 )
  to:main::@11
main::@11: scope:[main]  from main::screensizey3
  [70] if(main::i#2<main::screensizey3_return#0) goto main::@3
  to:main::@4
main::@4: scope:[main]  from main::@11
  [71] x_scroll = 0
  [72] y_scroll = -8
  to:main::enableVideoOutput1
main::enableVideoOutput1: scope:[main]  from main::@4
  [73] *((char *)PPU) = $80
  [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e
  to:main::@5
main::@5: scope:[main]  from main::@5 main::enableVideoOutput1
  [75] phi()
  to:main::@5
main::@3: scope:[main]  from main::@11
  [76] uctoa::value#1 = main::i#2 & $f
  [77] call uctoa
  to:main::@17
main::@17: scope:[main]  from main::@3
  [78] cputsxy::x#0 = main::i#2
  [79] cputsxy::y#0 = main::i#2
  [80] call cputsxy
  to:main::@18
main::@18: scope:[main]  from main::@17
  [81] main::i#1 = ++ main::i#2
  to:main::screensizey3
main::@2: scope:[main]  from main::@9
  [82] cputcxy::y#2 = main::y#10
  [83] call cputcxy
  to:main::screensizex2
main::screensizex2: scope:[main]  from main::@2
  [84] phi()
  to:main::@10
main::@10: scope:[main]  from main::screensizex2
  [85] cputcxy::y#3 = main::y#10
  [86] call cputcxy
  to:main::@16
main::@16: scope:[main]  from main::@10
  [87] main::y#1 = ++ main::y#10
  to:main::screensizey2
main::@1: scope:[main]  from main::@7
  [88] cputcxy::x#0 = main::x#10
  [89] call cputcxy
  to:main::screensizey1
main::screensizey1: scope:[main]  from main::@1
  [90] phi()
  to:main::@8
main::@8: scope:[main]  from main::screensizey1
  [91] cputcxy::x#1 = main::x#10
  [92] call cputcxy
  to:main::@15
main::@15: scope:[main]  from main::@8
  [93] main::x#1 = ++ main::x#10
  to:main::screensizex1

char readJoy1()
readJoy1: scope:[readJoy1]  from vblank
  [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1
  [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0
  to:readJoy1::@1
readJoy1::@1: scope:[readJoy1]  from readJoy1 readJoy1::@2
  [96] readJoy1::joy#2 = phi( readJoy1/0, readJoy1::@2/readJoy1::joy#1 )
  [96] readJoy1::i#2 = phi( readJoy1/0, readJoy1::@2/readJoy1::i#1 )
  [97] if(readJoy1::i#2<8) goto readJoy1::@2
  to:readJoy1::@return
readJoy1::@return: scope:[readJoy1]  from readJoy1::@1
  [98] return 
  to:@return
readJoy1::@2: scope:[readJoy1]  from readJoy1::@1
  [99] readJoy1::$1 = readJoy1::joy#2 << 1
  [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1
  [101] readJoy1::joy#1 = readJoy1::$1 | readJoy1::$2
  [102] readJoy1::i#1 = ++ readJoy1::i#2
  to:readJoy1::@1

void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
ppuDataTransfer: scope:[ppuDataTransfer]  from cscroll::@4 main::@6
  [103] ppuDataTransfer::size#3 = phi( cscroll::@4/$20, main::@6/$20*SIZEOF_CHAR )
  [103] ppuDataTransfer::cpuData#2 = phi( cscroll::@4/(void * const )conio_cscroll_buffer, main::@6/(void * const )PALETTE )
  [103] ppuDataTransfer::ppuDataPrepare1_ppuData#0 = phi( cscroll::@4/ppuDataTransfer::ppuData#0, main::@6/(void * const )PPU_PALETTE )
  to:ppuDataTransfer::ppuDataPrepare1
ppuDataTransfer::ppuDataPrepare1: scope:[ppuDataTransfer]  from ppuDataTransfer
  [104] ppuDataTransfer::ppuDataPrepare1_$0 = byte1  ppuDataTransfer::ppuDataPrepare1_ppuData#0
  [105] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$0
  [106] ppuDataTransfer::ppuDataPrepare1_$1 = byte0  ppuDataTransfer::ppuDataPrepare1_ppuData#0
  [107] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$1
  to:ppuDataTransfer::@3
ppuDataTransfer::@3: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPrepare1
  [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2
  to:ppuDataTransfer::@1
ppuDataTransfer::@1: scope:[ppuDataTransfer]  from ppuDataTransfer::@3 ppuDataTransfer::@4
  [109] ppuDataTransfer::cpuSrc#2 = phi( ppuDataTransfer::@3/ppuDataTransfer::cpuSrc#6, ppuDataTransfer::@4/ppuDataTransfer::cpuSrc#1 )
  [109] ppuDataTransfer::i#2 = phi( ppuDataTransfer::@3/0, ppuDataTransfer::@4/ppuDataTransfer::i#1 )
  [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2
  to:ppuDataTransfer::@return
ppuDataTransfer::@return: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  [111] return 
  to:@return
ppuDataTransfer::@2: scope:[ppuDataTransfer]  from ppuDataTransfer::@1
  [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2
  to:ppuDataTransfer::ppuDataPut1
ppuDataTransfer::ppuDataPut1: scope:[ppuDataTransfer]  from ppuDataTransfer::@2
  [113] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataTransfer::ppuDataPut1_val#0
  to:ppuDataTransfer::@4
ppuDataTransfer::@4: scope:[ppuDataTransfer]  from ppuDataTransfer::ppuDataPut1
  [114] ppuDataTransfer::cpuSrc#1 = ++ ppuDataTransfer::cpuSrc#2
  [115] ppuDataTransfer::i#1 = ++ ppuDataTransfer::i#2
  to:ppuDataTransfer::@1

void ppuDataFill(void * const ppuData , char val , unsigned int size)
ppuDataFill: scope:[ppuDataFill]  from clrscr cscroll::@3 main::@12 main::@13
  [116] ppuDataFill::val#10 = phi( clrscr/' ', cscroll::@3/' ', main::@12/0, main::@13/0 )
  [116] ppuDataFill::size#5 = phi( clrscr/$3c0, cscroll::@3/$20, main::@12/$40, main::@13/$40 )
  [116] ppuDataFill::ppuDataPrepare1_ppuData#0 = phi( clrscr/(void * const )PPU_NAME_TABLE_0, cscroll::@3/(void * const )PPU_NAME_TABLE_0+(unsigned int)$1e*$20-$20, main::@12/(void * const )PPU_ATTRIBUTE_TABLE_0, main::@13/(void * const )PPU_ATTRIBUTE_TABLE_1 )
  to:ppuDataFill::ppuDataPrepare1
ppuDataFill::ppuDataPrepare1: scope:[ppuDataFill]  from ppuDataFill
  [117] ppuDataFill::ppuDataPrepare1_$0 = byte1  ppuDataFill::ppuDataPrepare1_ppuData#0
  [118] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$0
  [119] ppuDataFill::ppuDataPrepare1_$1 = byte0  ppuDataFill::ppuDataPrepare1_ppuData#0
  [120] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$1
  to:ppuDataFill::@1
ppuDataFill::@1: scope:[ppuDataFill]  from ppuDataFill::@2 ppuDataFill::ppuDataPrepare1
  [121] ppuDataFill::i#2 = phi( ppuDataFill::ppuDataPrepare1/0, ppuDataFill::@2/ppuDataFill::i#1 )
  [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1
  to:ppuDataFill::@return
ppuDataFill::@return: scope:[ppuDataFill]  from ppuDataFill::@1
  [123] return 
  to:@return
ppuDataFill::ppuDataPut1: scope:[ppuDataFill]  from ppuDataFill::@1
  [124] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataFill::val#10
  to:ppuDataFill::@2
ppuDataFill::@2: scope:[ppuDataFill]  from ppuDataFill::ppuDataPut1
  [125] ppuDataFill::i#1 = ++ ppuDataFill::i#2
  to:ppuDataFill::@1

void clrscr()
clrscr: scope:[clrscr]  from main::@14
  [126] phi()
  [127] call ppuDataFill
  to:clrscr::@1
clrscr::@1: scope:[clrscr]  from clrscr
  [128] conio_cursor_x = 0
  [129] conio_cursor_y = 0
  [130] conio_line_text = PPU_NAME_TABLE_0
  to:clrscr::@return
clrscr::@return: scope:[clrscr]  from clrscr::@1
  [131] return 
  to:@return

void uctoa(char value , char *buffer , char radix)
uctoa: scope:[uctoa]  from main::@3
  [132] phi()
  to:uctoa::@1
uctoa::@1: scope:[uctoa]  from uctoa uctoa::@4
  [133] uctoa::buffer#11 = phi( uctoa::@4/uctoa::buffer#14, uctoa/num_buffer )
  [133] uctoa::started#2 = phi( uctoa::@4/uctoa::started#4, uctoa/0 )
  [133] uctoa::value#2 = phi( uctoa::@4/uctoa::value#6, uctoa/uctoa::value#1 )
  [133] uctoa::digit#2 = phi( uctoa::@4/uctoa::digit#1, uctoa/0 )
  [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2
  to:uctoa::@3
uctoa::@3: scope:[uctoa]  from uctoa::@1
  [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2]
  [136] uctoa::buffer#3 = ++ uctoa::buffer#11
  [137] *uctoa::buffer#3 = 0
  to:uctoa::@return
uctoa::@return: scope:[uctoa]  from uctoa::@3
  [138] return 
  to:@return
uctoa::@2: scope:[uctoa]  from uctoa::@1
  [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2]
  [140] if(0!=uctoa::started#2) goto uctoa::@5
  to:uctoa::@7
uctoa::@7: scope:[uctoa]  from uctoa::@2
  [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5
  to:uctoa::@4
uctoa::@4: scope:[uctoa]  from uctoa::@6 uctoa::@7
  [142] uctoa::buffer#14 = phi( uctoa::@7/uctoa::buffer#11, uctoa::@6/uctoa::buffer#4 )
  [142] uctoa::started#4 = phi( uctoa::@7/uctoa::started#2, uctoa::@6/1 )
  [142] uctoa::value#6 = phi( uctoa::@7/uctoa::value#2, uctoa::@6/uctoa::value#0 )
  [143] uctoa::digit#1 = ++ uctoa::digit#2
  to:uctoa::@1
uctoa::@5: scope:[uctoa]  from uctoa::@2 uctoa::@7
  [144] uctoa_append::buffer#0 = uctoa::buffer#11
  [145] uctoa_append::value#0 = uctoa::value#2
  [146] uctoa_append::sub#0 = uctoa::digit_value#0
  [147] call uctoa_append
  [148] uctoa_append::return#0 = uctoa_append::value#2
  to:uctoa::@6
uctoa::@6: scope:[uctoa]  from uctoa::@5
  [149] uctoa::value#0 = uctoa_append::return#0
  [150] uctoa::buffer#4 = ++ uctoa::buffer#11
  to:uctoa::@4

void cputsxy(char x , char y , const char *s)
cputsxy: scope:[cputsxy]  from main::@17
  [151] gotoxy::x#2 = cputsxy::x#0
  [152] gotoxy::y#2 = cputsxy::y#0
  [153] call gotoxy
  to:cputsxy::@1
cputsxy::@1: scope:[cputsxy]  from cputsxy
  [154] phi()
  [155] call cputs
  to:cputsxy::@return
cputsxy::@return: scope:[cputsxy]  from cputsxy::@1
  [156] return 
  to:@return

void cputcxy(char x , char y , char c)
cputcxy: scope:[cputcxy]  from main::@1 main::@10 main::@2 main::@8
  [157] cputcxy::c#4 = phi( main::@1/'-', main::@8/'-', main::@10/'i', main::@2/'i' )
  [157] cputcxy::y#4 = phi( main::@1/1, main::@8/main::screensizey1_return#0-4, main::@10/cputcxy::y#3, main::@2/cputcxy::y#2 )
  [157] cputcxy::x#4 = phi( main::@1/cputcxy::x#0, main::@8/cputcxy::x#1, main::@10/main::screensizex2_return#0-2, main::@2/1 )
  [158] gotoxy::x#1 = cputcxy::x#4
  [159] gotoxy::y#1 = cputcxy::y#4
  [160] call gotoxy
  to:cputcxy::@1
cputcxy::@1: scope:[cputcxy]  from cputcxy
  [161] cputc::c#0 = cputcxy::c#4
  [162] call cputc
  to:cputcxy::@return
cputcxy::@return: scope:[cputcxy]  from cputcxy::@1
  [163] return 
  to:@return

char uctoa_append(char *buffer , char value , char sub)
uctoa_append: scope:[uctoa_append]  from uctoa::@5
  [164] phi()
  to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append]  from uctoa_append uctoa_append::@2
  [165] uctoa_append::digit#2 = phi( uctoa_append/0, uctoa_append::@2/uctoa_append::digit#1 )
  [165] uctoa_append::value#2 = phi( uctoa_append/uctoa_append::value#0, uctoa_append::@2/uctoa_append::value#1 )
  [166] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2
  to:uctoa_append::@3
uctoa_append::@3: scope:[uctoa_append]  from uctoa_append::@1
  [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2]
  to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append]  from uctoa_append::@3
  [168] return 
  to:@return
uctoa_append::@2: scope:[uctoa_append]  from uctoa_append::@1
  [169] uctoa_append::digit#1 = ++ uctoa_append::digit#2
  [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0
  to:uctoa_append::@1

void gotoxy(char x , char y)
gotoxy: scope:[gotoxy]  from cputcxy cputsxy
  [171] gotoxy::x#4 = phi( cputcxy/gotoxy::x#1, cputsxy/gotoxy::x#2 )
  [171] gotoxy::y#4 = phi( cputcxy/gotoxy::y#1, cputsxy/gotoxy::y#2 )
  [172] if(gotoxy::y#4<$1e+1) goto gotoxy::@3
  to:gotoxy::@1
gotoxy::@3: scope:[gotoxy]  from gotoxy
  [173] phi()
  to:gotoxy::@1
gotoxy::@1: scope:[gotoxy]  from gotoxy gotoxy::@3
  [174] gotoxy::y#5 = phi( gotoxy::@3/gotoxy::y#4, gotoxy/0 )
  [175] if(gotoxy::x#4<$20) goto gotoxy::@4
  to:gotoxy::@2
gotoxy::@4: scope:[gotoxy]  from gotoxy::@1
  [176] phi()
  to:gotoxy::@2
gotoxy::@2: scope:[gotoxy]  from gotoxy::@1 gotoxy::@4
  [177] gotoxy::x#5 = phi( gotoxy::@4/gotoxy::x#4, gotoxy::@1/0 )
  [178] conio_cursor_x = gotoxy::x#5
  [179] conio_cursor_y = gotoxy::y#5
  [180] gotoxy::$6 = (unsigned int)gotoxy::y#5
  [181] gotoxy::line_offset#0 = gotoxy::$6 << 5
  [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0
  [183] conio_line_text = gotoxy::$5
  to:gotoxy::@return
gotoxy::@return: scope:[gotoxy]  from gotoxy::@2
  [184] return 
  to:@return

void cputs(const char *s)
cputs: scope:[cputs]  from cputsxy::@1
  [185] phi()
  to:cputs::@1
cputs::@1: scope:[cputs]  from cputs cputs::@2
  [186] cputs::s#2 = phi( cputs/num_buffer, cputs::@2/cputs::s#0 )
  [187] cputs::c#1 = *cputs::s#2
  [188] cputs::s#0 = ++ cputs::s#2
  [189] if(0!=cputs::c#1) goto cputs::@2
  to:cputs::@return
cputs::@return: scope:[cputs]  from cputs::@1
  [190] return 
  to:@return
cputs::@2: scope:[cputs]  from cputs::@1
  [191] cputc::c#1 = cputs::c#1
  [192] call cputc
  to:cputs::@1

void cputc(char c)
cputc: scope:[cputc]  from cputcxy::@1 cputs::@2
  [193] cputc::c#2 = phi( cputcxy::@1/cputc::c#0, cputs::@2/cputc::c#1 )
  [194] if(cputc::c#2=='
') goto cputc::@1
  to:cputc::@2
cputc::@2: scope:[cputc]  from cputc
  [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x
  [196] ppuDataSet::val#0 = cputc::c#2
  [197] call ppuDataSet
  to:cputc::@4
cputc::@4: scope:[cputc]  from cputc::@2
  [198] conio_cursor_x = ++ conio_cursor_x
  [199] if(conio_cursor_x!=$20) goto cputc::@return
  to:cputc::@3
cputc::@3: scope:[cputc]  from cputc::@4
  [200] phi()
  [201] call cputln
  to:cputc::@return
cputc::@return: scope:[cputc]  from cputc::@1 cputc::@3 cputc::@4
  [202] return 
  to:@return
cputc::@1: scope:[cputc]  from cputc
  [203] phi()
  [204] call cputln
  to:cputc::@return

void ppuDataSet(void * const ppuData , char val)
ppuDataSet: scope:[ppuDataSet]  from cputc::@2
  [205] phi()
  to:ppuDataSet::ppuDataPrepare1
ppuDataSet::ppuDataPrepare1: scope:[ppuDataSet]  from ppuDataSet
  [206] ppuDataSet::ppuDataPrepare1_$0 = byte1  (void * const )ppuDataSet::ppuData#0
  [207] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$0
  [208] ppuDataSet::ppuDataPrepare1_$1 = byte0  (void * const )ppuDataSet::ppuData#0
  [209] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$1
  to:ppuDataSet::ppuDataPut1
ppuDataSet::ppuDataPut1: scope:[ppuDataSet]  from ppuDataSet::ppuDataPrepare1
  [210] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataSet::val#0
  to:ppuDataSet::@return
ppuDataSet::@return: scope:[ppuDataSet]  from ppuDataSet::ppuDataPut1
  [211] return 
  to:@return

void cputln()
cputln: scope:[cputln]  from cputc::@1 cputc::@3
  [212] conio_line_text = conio_line_text + $20
  [213] conio_cursor_x = 0
  [214] conio_cursor_y = ++ conio_cursor_y
  [215] call cscroll
  to:cputln::@return
cputln::@return: scope:[cputln]  from cputln
  [216] return 
  to:@return

void cscroll()
cscroll: scope:[cscroll]  from cputln
  [217] if(conio_cursor_y!=$1e) goto cscroll::@return
  to:cscroll::@1
cscroll::@1: scope:[cscroll]  from cscroll cscroll::@5
  [218] cscroll::line1#2 = phi( cscroll/PPU_NAME_TABLE_0, cscroll::@5/cscroll::line1#1 )
  [218] cscroll::line2#2 = phi( cscroll/PPU_NAME_TABLE_0+$20, cscroll::@5/cscroll::line2#1 )
  [218] cscroll::y#2 = phi( cscroll/0, cscroll::@5/cscroll::y#1 )
  [219] if(cscroll::y#2<$1e-1) goto cscroll::@2
  to:cscroll::@3
cscroll::@3: scope:[cscroll]  from cscroll::@1
  [220] phi()
  [221] call ppuDataFill
  to:cscroll::@6
cscroll::@6: scope:[cscroll]  from cscroll::@3
  [222] conio_line_text = conio_line_text - $20
  [223] conio_cursor_y = -- conio_cursor_y
  to:cscroll::@return
cscroll::@return: scope:[cscroll]  from cscroll cscroll::@6
  [224] return 
  to:@return
cscroll::@2: scope:[cscroll]  from cscroll::@1
  [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2
  [226] call ppuDataFetch
  to:cscroll::@4
cscroll::@4: scope:[cscroll]  from cscroll::@2
  [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2
  [228] call ppuDataTransfer
  to:cscroll::@5
cscroll::@5: scope:[cscroll]  from cscroll::@4
  [229] cscroll::line1#1 = cscroll::line1#2 + $20
  [230] cscroll::line2#1 = cscroll::line2#2 + $20
  [231] cscroll::y#1 = ++ cscroll::y#2
  to:cscroll::@1

void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
ppuDataFetch: scope:[ppuDataFetch]  from cscroll::@2
  [232] phi()
  to:ppuDataFetch::ppuDataPrepare1
ppuDataFetch::ppuDataPrepare1: scope:[ppuDataFetch]  from ppuDataFetch
  [233] ppuDataFetch::ppuDataPrepare1_$0 = byte1  ppuDataFetch::ppuData#0
  [234] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$0
  [235] ppuDataFetch::ppuDataPrepare1_$1 = byte0  ppuDataFetch::ppuData#0
  [236] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$1
  to:ppuDataFetch::@2
ppuDataFetch::@2: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataPrepare1
  asm { ldaPPU_PPUDATA  }
  to:ppuDataFetch::@1
ppuDataFetch::@1: scope:[ppuDataFetch]  from ppuDataFetch::@2 ppuDataFetch::@3
  [238] ppuDataFetch::cpuDst#2 = phi( ppuDataFetch::@2/(char *)ppuDataFetch::cpuData#0, ppuDataFetch::@3/ppuDataFetch::cpuDst#1 )
  [238] ppuDataFetch::i#2 = phi( ppuDataFetch::@2/0, ppuDataFetch::@3/ppuDataFetch::i#1 )
  [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1
  to:ppuDataFetch::@return
ppuDataFetch::@return: scope:[ppuDataFetch]  from ppuDataFetch::@1
  [240] return 
  to:@return
ppuDataFetch::ppuDataRead1: scope:[ppuDataFetch]  from ppuDataFetch::@1
  [241] ppuDataFetch::ppuDataRead1_return#0 = *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA)
  to:ppuDataFetch::@3
ppuDataFetch::@3: scope:[ppuDataFetch]  from ppuDataFetch::ppuDataRead1
  [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0
  [243] ppuDataFetch::cpuDst#1 = ++ ppuDataFetch::cpuDst#2
  [244] ppuDataFetch::i#1 = ++ ppuDataFetch::i#2
  to:ppuDataFetch::@1

null depth in calling loop Loop head: cscroll::@1 tails: cscroll::@5 blocks: cscroll::@5 cscroll::@4 cscroll::@2 cscroll::@1  in scope ppuDataTransfer
null depth in calling loop Loop head: cputs::@1 tails: cputs::@2 blocks: cputs::@2 cputs::@1  in scope cputc
null depth in calling loop Loop head: cputs::@1 tails: cputs::@2 blocks: cputs::@2 cputs::@1  in scope cputc
null depth in calling loop Loop head: cputs::@1 tails: cputs::@2 blocks: cputs::@2 cputs::@1  in scope cputc
null depth in calling loop Loop head: cputs::@1 tails: cputs::@2 blocks: cputs::@2 cputs::@1  in scope cputc

VARIABLE REGISTER WEIGHTS
void __start()
void clrscr()
__loadstore char conio_cursor_x // 4375315.90625
__loadstore char conio_cursor_y // 6.530632875510204E7
__loadstore char *conio_line_text // 4.9111335755555555E7
void cputc(char c)
char cputc::c
char cputc::c#0 // 2002.0
char cputc::c#1 // 2000002.0
char cputc::c#2 // 7000334.666666666
void cputcxy(char x , char y , char c)
char cputcxy::c
char cputcxy::c#4 // 250.25
char cputcxy::x
char cputcxy::x#0 // 202.0
char cputcxy::x#1 // 202.0
char cputcxy::x#4 // 1203.0
char cputcxy::y
char cputcxy::y#2 // 202.0
char cputcxy::y#3 // 202.0
char cputcxy::y#4 // 601.5
void cputln()
void cputs(const char *s)
char cputs::c
char cputs::c#1 // 1000001.0
const char *cputs::s
const char *cputs::s#0 // 500000.5
const char *cputs::s#2 // 1500001.5
void cputsxy(char x , char y , const char *s)
const char *cputsxy::s
char cputsxy::x
char cputsxy::x#0 // 551.0
char cputsxy::y
char cputsxy::y#0 // 551.0
void cscroll()
char *cscroll::line1
char *cscroll::line1#1 // 6.666666666673334E11
char *cscroll::line1#2 // 3.333333333336667E11
char *cscroll::line2
char *cscroll::line2#1 // 1.000000000001E12
char *cscroll::line2#2 // 2.857142857145714E11
char cscroll::y
char cscroll::y#1 // 2.000000000002E12
char cscroll::y#2 // 3.75000000000375E11
void gotoxy(char x , char y)
char *gotoxy::$5 // 20002.0
unsigned int gotoxy::$6 // 20002.0
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0 // 20002.0
char gotoxy::x
char gotoxy::x#1 // 1001.0
char gotoxy::x#2 // 1001.0
char gotoxy::x#4 // 3667.333333333333
char gotoxy::x#5 // 20002.0
char gotoxy::y
char gotoxy::y#1 // 2002.0
char gotoxy::y#2 // 2002.0
char gotoxy::y#4 // 7334.666666666666
char gotoxy::y#5 // 3333.6666666666665
void main()
char main::i
char main::i#1 // 202.0
char main::i#2 // 86.57142857142857
char main::initNES1_i
char main::initNES1_i#1 // 151.5
char main::initNES1_i#2 // 112.22222222222223
char main::initNES1_waitForVBlank1_$0 // 202.0
char main::initNES1_waitForVBlank2_$0 // 202.0
char main::screensizex1_return
char main::screensizex2_return
char main::screensizey1_return
char main::screensizey2_return
char main::screensizey3_return
char main::x
char main::x#1 // 202.0
char main::x#10 // 72.14285714285714
char main::y
char main::y#1 // 202.0
char main::y#10 // 72.14285714285714
void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
void * const ppuDataFetch::cpuData
char *ppuDataFetch::cpuDst
char *ppuDataFetch::cpuDst#1 // 1.0E17
char *ppuDataFetch::cpuDst#2 // 7.5E16
unsigned int ppuDataFetch::i
unsigned int ppuDataFetch::i#1 // 2.0E17
unsigned int ppuDataFetch::i#2 // 6.0E16
void * const ppuDataFetch::ppuData
void * const ppuDataFetch::ppuData#0 // 5.25000000000075E12
char ppuDataFetch::ppuDataPrepare1_$0 // 2.0000000000002E13
char ppuDataFetch::ppuDataPrepare1_$1 // 2.0000000000002E13
void * const ppuDataFetch::ppuDataPrepare1_ppuData
char ppuDataFetch::ppuDataRead1_return
char ppuDataFetch::ppuDataRead1_return#0 // 2.0E17
unsigned int ppuDataFetch::size
void ppuDataFill(void * const ppuData , char val , unsigned int size)
unsigned int ppuDataFill::i
unsigned int ppuDataFill::i#1 // 2.000000000002E12
unsigned int ppuDataFill::i#2 // 1.000000000001E12
void * const ppuDataFill::ppuData
char ppuDataFill::ppuDataPrepare1_$0 // 2.0000000002E10
char ppuDataFill::ppuDataPrepare1_$1 // 2.0000000002E10
void * const ppuDataFill::ppuDataPrepare1_ppuData
void * const ppuDataFill::ppuDataPrepare1_ppuData#0 // 6.666666667333333E9
char ppuDataFill::ppuDataPut1_val
unsigned int ppuDataFill::size
unsigned int ppuDataFill::size#5 // 1.1111111111122223E11
char ppuDataFill::val
char ppuDataFill::val#10 // 1.1111111111122223E11
void ppuDataSet(void * const ppuData , char val)
void * const ppuDataSet::ppuData
char * const ppuDataSet::ppuData#0 // 2000000.2
char ppuDataSet::ppuDataPrepare1_$0 // 2.00000002E8
char ppuDataSet::ppuDataPrepare1_$1 // 2.00000002E8
void * const ppuDataSet::ppuDataPrepare1_ppuData
char ppuDataSet::ppuDataPut1_val
char ppuDataSet::val
char ppuDataSet::val#0 // 1.8333333666666668E7
void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
void * const ppuDataTransfer::cpuData
void * const ppuDataTransfer::cpuData#2
char *ppuDataTransfer::cpuSrc
char *ppuDataTransfer::cpuSrc#1 // 1.000000000000001E15
char *ppuDataTransfer::cpuSrc#2 // 7.52500000000001E14
char *ppuDataTransfer::cpuSrc#6 // 2.0000000000002E13
unsigned int ppuDataTransfer::i
unsigned int ppuDataTransfer::i#1 // 2.000000000000002E15
unsigned int ppuDataTransfer::i#2 // 6.000000000000005E14
void * const ppuDataTransfer::ppuData
void * const ppuDataTransfer::ppuData#0 // 2.000000000002E12
char ppuDataTransfer::ppuDataPrepare1_$0 // 2.0000000000002E13
char ppuDataTransfer::ppuDataPrepare1_$1 // 2.0000000000002E13
void * const ppuDataTransfer::ppuDataPrepare1_ppuData
void * const ppuDataTransfer::ppuDataPrepare1_ppuData#0 // 7.000000000001E12
char ppuDataTransfer::ppuDataPut1_val
char ppuDataTransfer::ppuDataPut1_val#0 // 2.000000000000002E15
unsigned int ppuDataTransfer::size
unsigned int ppuDataTransfer::size#3 // 8.333333333333342E13
char readJoy1()
char readJoy1::$1 // 101.0
char readJoy1::$2 // 202.0
char readJoy1::i
char readJoy1::i#1 // 202.0
char readJoy1::i#2 // 60.599999999999994
char readJoy1::joy
char readJoy1::joy#1 // 101.0
char readJoy1::joy#2 // 51.0
char readJoy1::return
char readJoy1::return#2 // 4.0
void uctoa(char value , char *buffer , char radix)
char *uctoa::buffer
char *uctoa::buffer#11 // 33500.49999999999
char *uctoa::buffer#14 // 150001.5
char *uctoa::buffer#3 // 2002.0
char *uctoa::buffer#4 // 200002.0
char uctoa::digit
char uctoa::digit#1 // 200002.0
char uctoa::digit#2 // 30769.53846153846
char uctoa::digit_value
char uctoa::digit_value#0 // 60000.600000000006
char *uctoa::digit_values
char uctoa::max_digits
char uctoa::radix
char uctoa::started
char uctoa::started#2 // 60000.600000000006
char uctoa::started#4 // 100001.0
char uctoa::value
char uctoa::value#0 // 100001.0
char uctoa::value#1 // 551.0
char uctoa::value#2 // 67000.99999999999
char uctoa::value#6 // 150001.5
char uctoa_append(char *buffer , char value , char sub)
char *uctoa_append::buffer
char *uctoa_append::buffer#0 // 137500.25
char uctoa_append::digit
char uctoa_append::digit#1 // 1.000000001E9
char uctoa_append::digit#2 // 1.0005000015E9
char uctoa_append::return
char uctoa_append::return#0 // 200002.0
char uctoa_append::sub
char uctoa_append::sub#0 // 3.333500005E8
char uctoa_append::value
char uctoa_append::value#0 // 366667.3333333334
char uctoa_append::value#1 // 2.000000002E9
char uctoa_append::value#2 // 5.0018333416666675E8
__interrupt(hardware_all) void vblank()
char vblank::$1 // 4.0
char vblank::$3 // 4.0
char vblank::$5 // 4.0
char vblank::$7 // 4.0
char vblank::joy
char vblank::joy#0 // 0.7142857142857142
__loadstore volatile char x_scroll // 1.15
__loadstore volatile char y_scroll // 1.4761904761904763

Initial phi equivalence classes
[ main::initNES1_i#2 main::initNES1_i#1 ]
[ main::x#10 main::x#1 ]
[ main::y#10 main::y#1 ]
[ main::i#2 main::i#1 ]
[ readJoy1::i#2 readJoy1::i#1 ]
[ readJoy1::joy#2 readJoy1::joy#1 ]
[ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ]
[ ppuDataTransfer::cpuData#2 ]
[ ppuDataTransfer::size#3 ]
[ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
[ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
[ ppuDataFill::ppuDataPrepare1_ppuData#0 ]
[ ppuDataFill::size#5 ]
[ ppuDataFill::val#10 ]
[ ppuDataFill::i#2 ppuDataFill::i#1 ]
[ uctoa::digit#2 uctoa::digit#1 ]
[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
[ uctoa::started#2 uctoa::started#4 ]
[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
[ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ]
[ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ]
[ cputcxy::c#4 ]
[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
[ uctoa_append::digit#2 uctoa_append::digit#1 ]
[ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ]
[ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ]
[ cputs::s#2 cputs::s#0 ]
[ cputc::c#2 cputc::c#0 cputc::c#1 ]
[ cscroll::y#2 cscroll::y#1 ]
[ cscroll::line2#2 cscroll::line2#1 ]
[ cscroll::line1#2 cscroll::line1#1 ]
[ ppuDataFetch::i#2 ppuDataFetch::i#1 ]
[ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ]
Added variable conio_cursor_x to live range equivalence class [ conio_cursor_x ]
Added variable conio_cursor_y to live range equivalence class [ conio_cursor_y ]
Added variable conio_line_text to live range equivalence class [ conio_line_text ]
Added variable x_scroll to live range equivalence class [ x_scroll ]
Added variable y_scroll to live range equivalence class [ y_scroll ]
Added variable readJoy1::return#2 to live range equivalence class [ readJoy1::return#2 ]
Added variable vblank::joy#0 to live range equivalence class [ vblank::joy#0 ]
Added variable vblank::$1 to live range equivalence class [ vblank::$1 ]
Added variable vblank::$3 to live range equivalence class [ vblank::$3 ]
Added variable vblank::$5 to live range equivalence class [ vblank::$5 ]
Added variable vblank::$7 to live range equivalence class [ vblank::$7 ]
Added variable main::initNES1_waitForVBlank1_$0 to live range equivalence class [ main::initNES1_waitForVBlank1_$0 ]
Added variable main::initNES1_waitForVBlank2_$0 to live range equivalence class [ main::initNES1_waitForVBlank2_$0 ]
Added variable cputsxy::x#0 to live range equivalence class [ cputsxy::x#0 ]
Added variable cputsxy::y#0 to live range equivalence class [ cputsxy::y#0 ]
Added variable readJoy1::$1 to live range equivalence class [ readJoy1::$1 ]
Added variable readJoy1::$2 to live range equivalence class [ readJoy1::$2 ]
Added variable ppuDataTransfer::ppuDataPrepare1_$0 to live range equivalence class [ ppuDataTransfer::ppuDataPrepare1_$0 ]
Added variable ppuDataTransfer::ppuDataPrepare1_$1 to live range equivalence class [ ppuDataTransfer::ppuDataPrepare1_$1 ]
Added variable ppuDataTransfer::ppuDataPut1_val#0 to live range equivalence class [ ppuDataTransfer::ppuDataPut1_val#0 ]
Added variable ppuDataFill::ppuDataPrepare1_$0 to live range equivalence class [ ppuDataFill::ppuDataPrepare1_$0 ]
Added variable ppuDataFill::ppuDataPrepare1_$1 to live range equivalence class [ ppuDataFill::ppuDataPrepare1_$1 ]
Added variable uctoa::buffer#3 to live range equivalence class [ uctoa::buffer#3 ]
Added variable uctoa::digit_value#0 to live range equivalence class [ uctoa::digit_value#0 ]
Added variable uctoa_append::buffer#0 to live range equivalence class [ uctoa_append::buffer#0 ]
Added variable uctoa_append::sub#0 to live range equivalence class [ uctoa_append::sub#0 ]
Added variable uctoa_append::return#0 to live range equivalence class [ uctoa_append::return#0 ]
Added variable gotoxy::$6 to live range equivalence class [ gotoxy::$6 ]
Added variable gotoxy::line_offset#0 to live range equivalence class [ gotoxy::line_offset#0 ]
Added variable gotoxy::$5 to live range equivalence class [ gotoxy::$5 ]
Added variable cputs::c#1 to live range equivalence class [ cputs::c#1 ]
Added variable ppuDataSet::ppuData#0 to live range equivalence class [ ppuDataSet::ppuData#0 ]
Added variable ppuDataSet::val#0 to live range equivalence class [ ppuDataSet::val#0 ]
Added variable ppuDataSet::ppuDataPrepare1_$0 to live range equivalence class [ ppuDataSet::ppuDataPrepare1_$0 ]
Added variable ppuDataSet::ppuDataPrepare1_$1 to live range equivalence class [ ppuDataSet::ppuDataPrepare1_$1 ]
Added variable ppuDataFetch::ppuData#0 to live range equivalence class [ ppuDataFetch::ppuData#0 ]
Added variable ppuDataFetch::ppuDataPrepare1_$0 to live range equivalence class [ ppuDataFetch::ppuDataPrepare1_$0 ]
Added variable ppuDataFetch::ppuDataPrepare1_$1 to live range equivalence class [ ppuDataFetch::ppuDataPrepare1_$1 ]
Added variable ppuDataFetch::ppuDataRead1_return#0 to live range equivalence class [ ppuDataFetch::ppuDataRead1_return#0 ]
Complete equivalence classes
[ main::initNES1_i#2 main::initNES1_i#1 ]
[ main::x#10 main::x#1 ]
[ main::y#10 main::y#1 ]
[ main::i#2 main::i#1 ]
[ readJoy1::i#2 readJoy1::i#1 ]
[ readJoy1::joy#2 readJoy1::joy#1 ]
[ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ]
[ ppuDataTransfer::cpuData#2 ]
[ ppuDataTransfer::size#3 ]
[ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
[ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
[ ppuDataFill::ppuDataPrepare1_ppuData#0 ]
[ ppuDataFill::size#5 ]
[ ppuDataFill::val#10 ]
[ ppuDataFill::i#2 ppuDataFill::i#1 ]
[ uctoa::digit#2 uctoa::digit#1 ]
[ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
[ uctoa::started#2 uctoa::started#4 ]
[ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
[ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ]
[ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ]
[ cputcxy::c#4 ]
[ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
[ uctoa_append::digit#2 uctoa_append::digit#1 ]
[ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ]
[ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ]
[ cputs::s#2 cputs::s#0 ]
[ cputc::c#2 cputc::c#0 cputc::c#1 ]
[ cscroll::y#2 cscroll::y#1 ]
[ cscroll::line2#2 cscroll::line2#1 ]
[ cscroll::line1#2 cscroll::line1#1 ]
[ ppuDataFetch::i#2 ppuDataFetch::i#1 ]
[ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ]
[ conio_cursor_x ]
[ conio_cursor_y ]
[ conio_line_text ]
[ x_scroll ]
[ y_scroll ]
[ readJoy1::return#2 ]
[ vblank::joy#0 ]
[ vblank::$1 ]
[ vblank::$3 ]
[ vblank::$5 ]
[ vblank::$7 ]
[ main::initNES1_waitForVBlank1_$0 ]
[ main::initNES1_waitForVBlank2_$0 ]
[ cputsxy::x#0 ]
[ cputsxy::y#0 ]
[ readJoy1::$1 ]
[ readJoy1::$2 ]
[ ppuDataTransfer::ppuDataPrepare1_$0 ]
[ ppuDataTransfer::ppuDataPrepare1_$1 ]
[ ppuDataTransfer::ppuDataPut1_val#0 ]
[ ppuDataFill::ppuDataPrepare1_$0 ]
[ ppuDataFill::ppuDataPrepare1_$1 ]
[ uctoa::buffer#3 ]
[ uctoa::digit_value#0 ]
[ uctoa_append::buffer#0 ]
[ uctoa_append::sub#0 ]
[ uctoa_append::return#0 ]
[ gotoxy::$6 ]
[ gotoxy::line_offset#0 ]
[ gotoxy::$5 ]
[ cputs::c#1 ]
[ ppuDataSet::ppuData#0 ]
[ ppuDataSet::val#0 ]
[ ppuDataSet::ppuDataPrepare1_$0 ]
[ ppuDataSet::ppuDataPrepare1_$1 ]
[ ppuDataFetch::ppuData#0 ]
[ ppuDataFetch::ppuDataPrepare1_$0 ]
[ ppuDataFetch::ppuDataPrepare1_$1 ]
[ ppuDataFetch::ppuDataRead1_return#0 ]
Allocated zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ]
Allocated zp[1]:3 [ main::x#10 main::x#1 ]
Allocated zp[1]:4 [ main::y#10 main::y#1 ]
Allocated zp[1]:5 [ main::i#2 main::i#1 ]
Allocated zp[1]:6 [ readJoy1::i#2 readJoy1::i#1 ]
Allocated zp[1]:7 [ readJoy1::joy#2 readJoy1::joy#1 ]
Allocated zp[2]:8 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ]
Allocated zp[2]:10 [ ppuDataTransfer::cpuData#2 ]
Allocated zp[2]:12 [ ppuDataTransfer::size#3 ]
Allocated zp[2]:14 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
Allocated zp[2]:16 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
Allocated zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ]
Allocated zp[2]:20 [ ppuDataFill::size#5 ]
Allocated zp[1]:22 [ ppuDataFill::val#10 ]
Allocated zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ]
Allocated zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ]
Allocated zp[1]:26 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
Allocated zp[1]:27 [ uctoa::started#2 uctoa::started#4 ]
Allocated zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ]
Allocated zp[1]:30 [ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ]
Allocated zp[1]:31 [ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ]
Allocated zp[1]:32 [ cputcxy::c#4 ]
Allocated zp[1]:33 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
Allocated zp[1]:34 [ uctoa_append::digit#2 uctoa_append::digit#1 ]
Allocated zp[1]:35 [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ]
Allocated zp[1]:36 [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ]
Allocated zp[2]:37 [ cputs::s#2 cputs::s#0 ]
Allocated zp[1]:39 [ cputc::c#2 cputc::c#0 cputc::c#1 ]
Allocated zp[1]:40 [ cscroll::y#2 cscroll::y#1 ]
Allocated zp[2]:41 [ cscroll::line2#2 cscroll::line2#1 ]
Allocated zp[2]:43 [ cscroll::line1#2 cscroll::line1#1 ]
Allocated zp[2]:45 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ]
Allocated zp[2]:47 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ]
Allocated zp[1]:49 [ conio_cursor_x ]
Allocated zp[1]:50 [ conio_cursor_y ]
Allocated zp[2]:51 [ conio_line_text ]
Allocated zp[1]:53 [ x_scroll ]
Allocated zp[1]:54 [ y_scroll ]
Allocated zp[1]:55 [ readJoy1::return#2 ]
Allocated zp[1]:56 [ vblank::joy#0 ]
Allocated zp[1]:57 [ vblank::$1 ]
Allocated zp[1]:58 [ vblank::$3 ]
Allocated zp[1]:59 [ vblank::$5 ]
Allocated zp[1]:60 [ vblank::$7 ]
Allocated zp[1]:61 [ main::initNES1_waitForVBlank1_$0 ]
Allocated zp[1]:62 [ main::initNES1_waitForVBlank2_$0 ]
Allocated zp[1]:63 [ cputsxy::x#0 ]
Allocated zp[1]:64 [ cputsxy::y#0 ]
Allocated zp[1]:65 [ readJoy1::$1 ]
Allocated zp[1]:66 [ readJoy1::$2 ]
Allocated zp[1]:67 [ ppuDataTransfer::ppuDataPrepare1_$0 ]
Allocated zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$1 ]
Allocated zp[1]:69 [ ppuDataTransfer::ppuDataPut1_val#0 ]
Allocated zp[1]:70 [ ppuDataFill::ppuDataPrepare1_$0 ]
Allocated zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$1 ]
Allocated zp[2]:72 [ uctoa::buffer#3 ]
Allocated zp[1]:74 [ uctoa::digit_value#0 ]
Allocated zp[2]:75 [ uctoa_append::buffer#0 ]
Allocated zp[1]:77 [ uctoa_append::sub#0 ]
Allocated zp[1]:78 [ uctoa_append::return#0 ]
Allocated zp[2]:79 [ gotoxy::$6 ]
Allocated zp[2]:81 [ gotoxy::line_offset#0 ]
Allocated zp[2]:83 [ gotoxy::$5 ]
Allocated zp[1]:85 [ cputs::c#1 ]
Allocated zp[2]:86 [ ppuDataSet::ppuData#0 ]
Allocated zp[1]:88 [ ppuDataSet::val#0 ]
Allocated zp[1]:89 [ ppuDataSet::ppuDataPrepare1_$0 ]
Allocated zp[1]:90 [ ppuDataSet::ppuDataPrepare1_$1 ]
Allocated zp[2]:91 [ ppuDataFetch::ppuData#0 ]
Allocated zp[1]:93 [ ppuDataFetch::ppuDataPrepare1_$0 ]
Allocated zp[1]:94 [ ppuDataFetch::ppuDataPrepare1_$1 ]
Allocated zp[1]:95 [ ppuDataFetch::ppuDataRead1_return#0 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] conio_cursor_x = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [2] conio_cursor_y = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [3] conio_line_text = PPU_NAME_TABLE_0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [4] x_scroll = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [5] y_scroll = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [16] if(y_scroll!=$f0) goto vblank::@1 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:56 [ vblank::joy#0 ]
Statement [17] y_scroll = 0 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [18] vblank::$3 = vblank::joy#0 & JOY_UP [ x_scroll y_scroll vblank::joy#0 vblank::$3 ] (  [ x_scroll y_scroll vblank::joy#0 vblank::$3 ] { }  ) always clobbers reg byte a 
Statement [21] if(y_scroll!=$ff) goto vblank::@2 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [22] y_scroll = $ef [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [23] vblank::$5 = vblank::joy#0 & JOY_LEFT [ x_scroll y_scroll vblank::joy#0 vblank::$5 ] (  [ x_scroll y_scroll vblank::joy#0 vblank::$5 ] { }  ) always clobbers reg byte a 
Statement [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT [ x_scroll y_scroll vblank::$7 ] (  [ x_scroll y_scroll vblank::$7 ] { }  ) always clobbers reg byte a 
Statement [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll [ y_scroll ] (  [ y_scroll ] { }  ) always clobbers reg byte a 
Statement [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [31] return  [ ] (  [ ] { }  ) always clobbers reg byte a reg byte x reg byte y 
Statement asm { cld ldx#$ff txs  } always clobbers reg byte x 
Statement [34] *((char *)PPU) = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [36] *FR_COUNTER = $40 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUSTATUS  } always clobbers reg byte a 
Statement [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 [ main::initNES1_waitForVBlank1_$0 ] (  [ main::initNES1_waitForVBlank1_$0 ] { }  main:7 [ main::initNES1_waitForVBlank1_$0 ] { }  ) always clobbers reg byte a 
Statement [43] MEMORY[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ]
Statement [44] (MEMORY+$100)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [45] (MEMORY+$200)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [46] (MEMORY+$300)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [47] (MEMORY+$400)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [48] (MEMORY+$500)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [49] (MEMORY+$600)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [50] (MEMORY+$700)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 [ main::initNES1_waitForVBlank2_$0 ] (  [ main::initNES1_waitForVBlank2_$0 ] { }  main:7 [ main::initNES1_waitForVBlank2_$0 ] { }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUSTATUS  } always clobbers reg byte a 
Statement [71] x_scroll = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [72] y_scroll = -8 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [73] *((char *)PPU) = $80 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1 [ ] ( readJoy1:10 [ x_scroll y_scroll ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0 [ ] ( readJoy1:10 [ x_scroll y_scroll ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [99] readJoy1::$1 = readJoy1::joy#2 << 1 [ readJoy1::i#2 readJoy1::$1 ] ( readJoy1:10 [ x_scroll y_scroll readJoy1::i#2 readJoy1::$1 ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:6 [ readJoy1::i#2 readJoy1::i#1 ]
Statement [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1 [ readJoy1::i#2 readJoy1::$1 readJoy1::$2 ] ( readJoy1:10 [ x_scroll y_scroll readJoy1::i#2 readJoy1::$1 readJoy1::$2 ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:65 [ readJoy1::$1 ]
Statement [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::y#10 main::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:40 [ cscroll::y#2 cscroll::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#10 main::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i#2 main::i#1 ]
Statement [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Statement [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::y#10 main::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:40 [ cscroll::y#2 cscroll::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#10 main::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::i#2 main::i#1 ]
Statement [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] ( ppuDataFill:60 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::ppuDataFill:60 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  ppuDataFill:62 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::ppuDataFill:62 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  clrscr:64::ppuDataFill:127 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::clrscr:64::ppuDataFill:127 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:22 [ ppuDataFill::val#10 ]
Statement [128] conio_cursor_x = 0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [129] conio_cursor_y = 0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [130] conio_line_text = PPU_NAME_TABLE_0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] [ uctoa::buffer#11 ] ( uctoa:77 [ main::i#2 uctoa::buffer#11 ] { }  main:7::uctoa:77 [ main::i#2 uctoa::buffer#11 ] { }  ) always clobbers reg byte a reg byte y 
Statement [136] uctoa::buffer#3 = ++ uctoa::buffer#11 [ uctoa::buffer#3 ] ( uctoa:77 [ main::i#2 uctoa::buffer#3 ] { }  main:7::uctoa:77 [ main::i#2 uctoa::buffer#3 ] { }  ) always clobbers reg byte a 
Statement [137] *uctoa::buffer#3 = 0 [ ] ( uctoa:77 [ main::i#2 ] { }  main:7::uctoa:77 [ main::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [144] uctoa_append::buffer#0 = uctoa::buffer#11 [ uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( uctoa:77 [ main::i#2 uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77 [ main::i#2 uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:26 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:74 [ uctoa::digit_value#0 ]
Statement [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] [ uctoa_append::value#2 ] ( uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:33 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:33 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
Statement [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:77 [ uctoa_append::sub#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:34 [ uctoa_append::digit#2 uctoa_append::digit#1 ]
Statement [180] gotoxy::$6 = (unsigned int)gotoxy::y#5 [ conio_cursor_x conio_cursor_y gotoxy::$6 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:32 [ cputcxy::c#4 ]
Statement [181] gotoxy::line_offset#0 = gotoxy::$6 << 5 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y gotoxy::$5 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [183] conio_line_text = gotoxy::$5 [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [187] cputs::c#1 = *cputs::s#2 [ conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] ( cputsxy:80::cputs:155 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::cputs:155 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } }  ) always clobbers reg byte a reg byte y 
Statement [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x [ conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] ( cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 ppuDataSet::val#0 } }  main:7::cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 ppuDataSet::val#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:39 [ cputc::c#2 cputc::c#0 cputc::c#1 ]
Statement [199] if(conio_cursor_x!=$20) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [212] conio_line_text = conio_line_text + $20 [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [213] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [217] if(conio_cursor_y!=$1e) goto cscroll::@return [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [222] conio_line_text = conio_line_text - $20 [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2 [ conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Statement [229] cscroll::line1#1 = cscroll::line1#2 + $20 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [230] cscroll::line2#1 = cscroll::line2#2 + $20 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUDATA  } always clobbers reg byte a 
Statement [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1 [ ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0 [ ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte y 
Statement [1] conio_cursor_x = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [2] conio_cursor_y = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [3] conio_line_text = PPU_NAME_TABLE_0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [4] x_scroll = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [5] y_scroll = 0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [13] vblank::$1 = vblank::joy#0 & JOY_DOWN [ x_scroll y_scroll vblank::joy#0 vblank::$1 ] (  [ x_scroll y_scroll vblank::joy#0 vblank::$1 ] { }  ) always clobbers reg byte a 
Statement [16] if(y_scroll!=$f0) goto vblank::@1 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [17] y_scroll = 0 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [18] vblank::$3 = vblank::joy#0 & JOY_UP [ x_scroll y_scroll vblank::joy#0 vblank::$3 ] (  [ x_scroll y_scroll vblank::joy#0 vblank::$3 ] { }  ) always clobbers reg byte a 
Statement [21] if(y_scroll!=$ff) goto vblank::@2 [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [22] y_scroll = $ef [ x_scroll y_scroll vblank::joy#0 ] (  [ x_scroll y_scroll vblank::joy#0 ] { }  ) always clobbers reg byte a 
Statement [23] vblank::$5 = vblank::joy#0 & JOY_LEFT [ x_scroll y_scroll vblank::joy#0 vblank::$5 ] (  [ x_scroll y_scroll vblank::joy#0 vblank::$5 ] { }  ) always clobbers reg byte a 
Statement [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT [ x_scroll y_scroll vblank::$7 ] (  [ x_scroll y_scroll vblank::$7 ] { }  ) always clobbers reg byte a 
Statement [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll [ y_scroll ] (  [ y_scroll ] { }  ) always clobbers reg byte a 
Statement [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [31] return  [ ] (  [ ] { }  ) always clobbers reg byte a reg byte x reg byte y 
Statement asm { cld ldx#$ff txs  } always clobbers reg byte x 
Statement [34] *((char *)PPU) = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [36] *FR_COUNTER = $40 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUSTATUS  } always clobbers reg byte a 
Statement [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 [ main::initNES1_waitForVBlank1_$0 ] (  [ main::initNES1_waitForVBlank1_$0 ] { }  main:7 [ main::initNES1_waitForVBlank1_$0 ] { }  ) always clobbers reg byte a 
Statement [43] MEMORY[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [44] (MEMORY+$100)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [45] (MEMORY+$200)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [46] (MEMORY+$300)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [47] (MEMORY+$400)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [48] (MEMORY+$500)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [49] (MEMORY+$600)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [50] (MEMORY+$700)[main::initNES1_i#2] = 0 [ main::initNES1_i#2 ] (  [ main::initNES1_i#2 ] { }  main:7 [ main::initNES1_i#2 ] { }  ) always clobbers reg byte a 
Statement [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 [ main::initNES1_waitForVBlank2_$0 ] (  [ main::initNES1_waitForVBlank2_$0 ] { }  main:7 [ main::initNES1_waitForVBlank2_$0 ] { }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUSTATUS  } always clobbers reg byte a 
Statement [71] x_scroll = 0 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [72] y_scroll = -8 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [73] *((char *)PPU) = $80 [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e [ ] (  [ ] { }  main:7 [ ] { }  ) always clobbers reg byte a 
Statement [76] uctoa::value#1 = main::i#2 & $f [ main::i#2 uctoa::value#1 ] (  [ main::i#2 uctoa::value#1 ] { }  main:7 [ main::i#2 uctoa::value#1 ] { }  ) always clobbers reg byte a 
Statement [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1 [ ] ( readJoy1:10 [ x_scroll y_scroll ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0 [ ] ( readJoy1:10 [ x_scroll y_scroll ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [99] readJoy1::$1 = readJoy1::joy#2 << 1 [ readJoy1::i#2 readJoy1::$1 ] ( readJoy1:10 [ x_scroll y_scroll readJoy1::i#2 readJoy1::$1 ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1 [ readJoy1::i#2 readJoy1::$1 readJoy1::$2 ] ( readJoy1:10 [ x_scroll y_scroll readJoy1::i#2 readJoy1::$1 readJoy1::$2 ] { { readJoy1::return#2 = readJoy1::joy#2 } }  ) always clobbers reg byte a 
Statement [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::cpuSrc#6 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Statement [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Statement [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] ( ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  main:7::ppuDataTransfer:58 [ ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataTransfer:228 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataTransfer::size#3 ppuDataTransfer::i#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::ppuDataPut1_val#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a reg byte y 
Statement [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] ( ppuDataFill:60 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::ppuDataFill:60 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  ppuDataFill:62 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::ppuDataFill:62 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  clrscr:64::ppuDataFill:127 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  main:7::clrscr:64::ppuDataFill:127 [ ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { }  cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFill:221 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFill:221 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataFill::size#5 ppuDataFill::val#10 ppuDataFill::i#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [128] conio_cursor_x = 0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [129] conio_cursor_y = 0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [130] conio_line_text = PPU_NAME_TABLE_0 [ ] ( clrscr:64 [ ] { }  main:7::clrscr:64 [ ] { }  ) always clobbers reg byte a 
Statement [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] [ uctoa::buffer#11 ] ( uctoa:77 [ main::i#2 uctoa::buffer#11 ] { }  main:7::uctoa:77 [ main::i#2 uctoa::buffer#11 ] { }  ) always clobbers reg byte a reg byte y 
Statement [136] uctoa::buffer#3 = ++ uctoa::buffer#11 [ uctoa::buffer#3 ] ( uctoa:77 [ main::i#2 uctoa::buffer#3 ] { }  main:7::uctoa:77 [ main::i#2 uctoa::buffer#3 ] { }  ) always clobbers reg byte a 
Statement [137] *uctoa::buffer#3 = 0 [ ] ( uctoa:77 [ main::i#2 ] { }  main:7::uctoa:77 [ main::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [144] uctoa_append::buffer#0 = uctoa::buffer#11 [ uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] ( uctoa:77 [ main::i#2 uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77 [ main::i#2 uctoa::digit#2 uctoa::value#2 uctoa::buffer#11 uctoa::digit_value#0 uctoa_append::buffer#0 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] [ uctoa_append::value#2 ] ( uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::value#2 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a reg byte y 
Statement [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 [ uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] ( uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  main:7::uctoa:77::uctoa_append:147 [ main::i#2 uctoa::digit#2 uctoa::buffer#11 uctoa_append::buffer#0 uctoa_append::sub#0 uctoa_append::value#1 uctoa_append::digit#1 ] { { uctoa_append::buffer#0 = uctoa::buffer#11 } { uctoa_append::value#0 = uctoa::value#2 } { uctoa_append::sub#0 = uctoa::digit_value#0 } { uctoa_append::return#0 = uctoa_append::value#2 } }  ) always clobbers reg byte a 
Statement [180] gotoxy::$6 = (unsigned int)gotoxy::y#5 [ conio_cursor_x conio_cursor_y gotoxy::$6 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$6 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [181] gotoxy::line_offset#0 = gotoxy::$6 << 5 [ conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::line_offset#0 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0 [ conio_cursor_x conio_cursor_y gotoxy::$5 ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y gotoxy::$5 ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [183] conio_line_text = gotoxy::$5 [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::gotoxy:153 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::x#2 = gotoxy::x#4 gotoxy::y#4 gotoxy::y#2 cputsxy::x#0 main::i#2 cputsxy::y#0 } }  cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:83::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#2 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  main:7::cputcxy:86::gotoxy:160 [ main::y#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 cputcxy::y#3 main::y#10 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 } }  cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  main:7::cputcxy:89::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#0 main::x#10 } }  cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  main:7::cputcxy:92::gotoxy:160 [ main::x#10 cputcxy::c#4 conio_cursor_x conio_cursor_y conio_line_text ] { { gotoxy::y#1 = gotoxy::y#4 cputcxy::y#4 } { gotoxy::x#1 = gotoxy::x#4 cputcxy::x#4 cputcxy::x#1 main::x#10 } }  ) always clobbers reg byte a 
Statement [187] cputs::c#1 = *cputs::s#2 [ conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] ( cputsxy:80::cputs:155 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } }  main:7::cputsxy:80::cputs:155 [ main::i#2 conio_cursor_x conio_cursor_y conio_line_text cputs::s#2 cputs::c#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } }  ) always clobbers reg byte a reg byte y 
Statement [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x [ conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] ( cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  main:7::cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 ppuDataSet::val#0 } }  cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 ppuDataSet::val#0 } }  main:7::cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cputc::c#2 ppuDataSet::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 ppuDataSet::val#0 } }  ) always clobbers reg byte a 
Statement [199] if(conio_cursor_x!=$20) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [212] conio_line_text = conio_line_text + $20 [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [213] conio_cursor_x = 0 [ conio_cursor_x conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [217] if(conio_cursor_y!=$1e) goto cscroll::@return [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [222] conio_line_text = conio_line_text - $20 [ conio_cursor_y conio_line_text ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::ppuData#0 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2 [ conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text ppuDataTransfer::ppuData#0 cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } { ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 } }  ) always clobbers reg byte a 
Statement [229] cscroll::line1#1 = cscroll::line1#2 + $20 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [230] cscroll::line2#1 = cscroll::line2#2 + $20 [ conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#1 cscroll::line1#1 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement asm { ldaPPU_PPUDATA  } always clobbers reg byte a 
Statement [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1 [ ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte a 
Statement [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0 [ ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] ( cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:201::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:201::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:83::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#2 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:86::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::y#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::y#3 = cputcxy::y#4 main::y#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:89::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#0 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  main:7::cputcxy:92::cputc:162::cputln:204::cscroll:215::ppuDataFetch:226 [ main::x#10 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputcxy::x#1 = cputcxy::x#4 main::x#10 } { cputc::c#0 = cputc::c#2 cputcxy::c#4 } }  cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  main:7::cputsxy:80::cputs:155::cputc:192::cputln:204::cscroll:215::ppuDataFetch:226 [ main::i#2 cputs::s#0 conio_cursor_x conio_cursor_y conio_line_text cscroll::y#2 cscroll::line2#2 cscroll::line1#2 ppuDataFetch::i#2 ppuDataFetch::cpuDst#2 ] { { cputsxy::x#0 = main::i#2 cputsxy::y#0 } { cputc::c#1 = cputc::c#2 cputs::c#1 } }  ) always clobbers reg byte y 
Potential registers zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] : zp[1]:2 , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ main::x#10 main::x#1 ] : zp[1]:3 , reg byte x , 
Potential registers zp[1]:4 [ main::y#10 main::y#1 ] : zp[1]:4 , reg byte x , 
Potential registers zp[1]:5 [ main::i#2 main::i#1 ] : zp[1]:5 , reg byte x , 
Potential registers zp[1]:6 [ readJoy1::i#2 readJoy1::i#1 ] : zp[1]:6 , reg byte x , reg byte y , 
Potential registers zp[1]:7 [ readJoy1::joy#2 readJoy1::joy#1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:8 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ] : zp[2]:8 , 
Potential registers zp[2]:10 [ ppuDataTransfer::cpuData#2 ] : zp[2]:10 , 
Potential registers zp[2]:12 [ ppuDataTransfer::size#3 ] : zp[2]:12 , 
Potential registers zp[2]:14 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] : zp[2]:14 , 
Potential registers zp[2]:16 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] : zp[2]:16 , 
Potential registers zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] : zp[2]:18 , 
Potential registers zp[2]:20 [ ppuDataFill::size#5 ] : zp[2]:20 , 
Potential registers zp[1]:22 [ ppuDataFill::val#10 ] : zp[1]:22 , reg byte x , reg byte y , 
Potential registers zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] : zp[2]:23 , 
Potential registers zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ] : zp[1]:25 , reg byte x , 
Potential registers zp[1]:26 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] : zp[1]:26 , reg byte x , reg byte y , 
Potential registers zp[1]:27 [ uctoa::started#2 uctoa::started#4 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] : zp[2]:28 , 
Potential registers zp[1]:30 [ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:31 [ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:32 [ cputcxy::c#4 ] : zp[1]:32 , reg byte x , reg byte y , 
Potential registers zp[1]:33 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] : zp[1]:33 , reg byte x , 
Potential registers zp[1]:34 [ uctoa_append::digit#2 uctoa_append::digit#1 ] : zp[1]:34 , reg byte x , reg byte y , 
Potential registers zp[1]:35 [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:36 [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:37 [ cputs::s#2 cputs::s#0 ] : zp[2]:37 , 
Potential registers zp[1]:39 [ cputc::c#2 cputc::c#0 cputc::c#1 ] : zp[1]:39 , reg byte x , reg byte y , 
Potential registers zp[1]:40 [ cscroll::y#2 cscroll::y#1 ] : zp[1]:40 , reg byte x , 
Potential registers zp[2]:41 [ cscroll::line2#2 cscroll::line2#1 ] : zp[2]:41 , 
Potential registers zp[2]:43 [ cscroll::line1#2 cscroll::line1#1 ] : zp[2]:43 , 
Potential registers zp[2]:45 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ] : zp[2]:45 , 
Potential registers zp[2]:47 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ] : zp[2]:47 , 
Potential registers zp[1]:49 [ conio_cursor_x ] : zp[1]:49 , 
Potential registers zp[1]:50 [ conio_cursor_y ] : zp[1]:50 , 
Potential registers zp[2]:51 [ conio_line_text ] : zp[2]:51 , 
Potential registers zp[1]:53 [ x_scroll ] : zp[1]:53 , 
Potential registers zp[1]:54 [ y_scroll ] : zp[1]:54 , 
Potential registers zp[1]:55 [ readJoy1::return#2 ] : zp[1]:55 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:56 [ vblank::joy#0 ] : zp[1]:56 , reg byte x , reg byte y , 
Potential registers zp[1]:57 [ vblank::$1 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:58 [ vblank::$3 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:59 [ vblank::$5 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:60 [ vblank::$7 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:61 [ main::initNES1_waitForVBlank1_$0 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:62 [ main::initNES1_waitForVBlank2_$0 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:63 [ cputsxy::x#0 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ cputsxy::y#0 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:65 [ readJoy1::$1 ] : zp[1]:65 , reg byte x , reg byte y , 
Potential registers zp[1]:66 [ readJoy1::$2 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:67 [ ppuDataTransfer::ppuDataPrepare1_$0 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$1 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:69 [ ppuDataTransfer::ppuDataPut1_val#0 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:70 [ ppuDataFill::ppuDataPrepare1_$0 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$1 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:72 [ uctoa::buffer#3 ] : zp[2]:72 , 
Potential registers zp[1]:74 [ uctoa::digit_value#0 ] : zp[1]:74 , reg byte x , reg byte y , 
Potential registers zp[2]:75 [ uctoa_append::buffer#0 ] : zp[2]:75 , 
Potential registers zp[1]:77 [ uctoa_append::sub#0 ] : zp[1]:77 , reg byte x , reg byte y , 
Potential registers zp[1]:78 [ uctoa_append::return#0 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:79 [ gotoxy::$6 ] : zp[2]:79 , 
Potential registers zp[2]:81 [ gotoxy::line_offset#0 ] : zp[2]:81 , 
Potential registers zp[2]:83 [ gotoxy::$5 ] : zp[2]:83 , 
Potential registers zp[1]:85 [ cputs::c#1 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:86 [ ppuDataSet::ppuData#0 ] : zp[2]:86 , 
Potential registers zp[1]:88 [ ppuDataSet::val#0 ] : zp[1]:88 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:89 [ ppuDataSet::ppuDataPrepare1_$0 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:90 [ ppuDataSet::ppuDataPrepare1_$1 ] : zp[1]:90 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:91 [ ppuDataFetch::ppuData#0 ] : zp[2]:91 , 
Potential registers zp[1]:93 [ ppuDataFetch::ppuDataPrepare1_$0 ] : zp[1]:93 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:94 [ ppuDataFetch::ppuDataPrepare1_$1 ] : zp[1]:94 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:95 [ ppuDataFetch::ppuDataRead1_return#0 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [ppuDataFetch] 260,000,000,000,000,000: zp[2]:45 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ] 200,000,000,000,000,000: zp[1]:95 [ ppuDataFetch::ppuDataRead1_return#0 ] 175,000,000,000,000,000: zp[2]:47 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ] 20,000,000,000,002: zp[1]:93 [ ppuDataFetch::ppuDataPrepare1_$0 ] 20,000,000,000,002: zp[1]:94 [ ppuDataFetch::ppuDataPrepare1_$1 ] 5,250,000,000,000.75: zp[2]:91 [ ppuDataFetch::ppuData#0 ] 
Uplift Scope [ppuDataTransfer] 2,600,000,000,000,002.5: zp[2]:14 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] 2,000,000,000,000,002: zp[1]:69 [ ppuDataTransfer::ppuDataPut1_val#0 ] 1,772,500,000,000,004: zp[2]:16 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] 83,333,333,333,333.42: zp[2]:12 [ ppuDataTransfer::size#3 ] 20,000,000,000,002: zp[1]:67 [ ppuDataTransfer::ppuDataPrepare1_$0 ] 20,000,000,000,002: zp[1]:68 [ ppuDataTransfer::ppuDataPrepare1_$1 ] 9,000,000,000,003: zp[2]:8 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ] 0: zp[2]:10 [ ppuDataTransfer::cpuData#2 ] 
Uplift Scope [cscroll] 2,375,000,000,002.38: zp[1]:40 [ cscroll::y#2 cscroll::y#1 ] 1,285,714,285,715.57: zp[2]:41 [ cscroll::line2#2 cscroll::line2#1 ] 1,000,000,000,001: zp[2]:43 [ cscroll::line1#2 cscroll::line1#1 ] 
Uplift Scope [ppuDataFill] 3,000,000,000,003: zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] 111,111,111,111.22: zp[2]:20 [ ppuDataFill::size#5 ] 111,111,111,111.22: zp[1]:22 [ ppuDataFill::val#10 ] 20,000,000,002: zp[1]:70 [ ppuDataFill::ppuDataPrepare1_$0 ] 20,000,000,002: zp[1]:71 [ ppuDataFill::ppuDataPrepare1_$1 ] 6,666,666,667.33: zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
Uplift Scope [uctoa_append] 2,500,550,003.5: zp[1]:33 [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] 2,000,500,002.5: zp[1]:34 [ uctoa_append::digit#2 uctoa_append::digit#1 ] 333,350,000.5: zp[1]:77 [ uctoa_append::sub#0 ] 200,002: zp[1]:78 [ uctoa_append::return#0 ] 137,500.25: zp[2]:75 [ uctoa_append::buffer#0 ] 
Uplift Scope [ppuDataSet] 200,000,002: zp[1]:89 [ ppuDataSet::ppuDataPrepare1_$0 ] 200,000,002: zp[1]:90 [ ppuDataSet::ppuDataPrepare1_$1 ] 18,333,333.67: zp[1]:88 [ ppuDataSet::val#0 ] 2,000,000.2: zp[2]:86 [ ppuDataSet::ppuData#0 ] 
Uplift Scope [] 65,306,328.76: zp[1]:50 [ conio_cursor_y ] 49,111,335.76: zp[2]:51 [ conio_line_text ] 4,375,315.91: zp[1]:49 [ conio_cursor_x ] 1.48: zp[1]:54 [ y_scroll ] 1.15: zp[1]:53 [ x_scroll ] 
Uplift Scope [cputc] 9,002,338.67: zp[1]:39 [ cputc::c#2 cputc::c#0 cputc::c#1 ] 
Uplift Scope [cputs] 2,000,002: zp[2]:37 [ cputs::s#2 cputs::s#0 ] 1,000,001: zp[1]:85 [ cputs::c#1 ] 
Uplift Scope [uctoa] 383,504: zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] 317,554.5: zp[1]:26 [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] 230,771.54: zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ] 160,001.6: zp[1]:27 [ uctoa::started#2 uctoa::started#4 ] 60,000.6: zp[1]:74 [ uctoa::digit_value#0 ] 2,002: zp[2]:72 [ uctoa::buffer#3 ] 
Uplift Scope [gotoxy] 25,671.33: zp[1]:36 [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ] 20,002: zp[2]:79 [ gotoxy::$6 ] 20,002: zp[2]:81 [ gotoxy::line_offset#0 ] 20,002: zp[2]:83 [ gotoxy::$5 ] 14,672.33: zp[1]:35 [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ] 
Uplift Scope [cputcxy] 1,607: zp[1]:30 [ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ] 1,005.5: zp[1]:31 [ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ] 250.25: zp[1]:32 [ cputcxy::c#4 ] 
Uplift Scope [main] 288.57: zp[1]:5 [ main::i#2 main::i#1 ] 274.14: zp[1]:3 [ main::x#10 main::x#1 ] 274.14: zp[1]:4 [ main::y#10 main::y#1 ] 263.72: zp[1]:2 [ main::initNES1_i#2 main::initNES1_i#1 ] 202: zp[1]:61 [ main::initNES1_waitForVBlank1_$0 ] 202: zp[1]:62 [ main::initNES1_waitForVBlank2_$0 ] 
Uplift Scope [cputsxy] 551: zp[1]:63 [ cputsxy::x#0 ] 551: zp[1]:64 [ cputsxy::y#0 ] 
Uplift Scope [readJoy1] 262.6: zp[1]:6 [ readJoy1::i#2 readJoy1::i#1 ] 202: zp[1]:66 [ readJoy1::$2 ] 152: zp[1]:7 [ readJoy1::joy#2 readJoy1::joy#1 ] 101: zp[1]:65 [ readJoy1::$1 ] 4: zp[1]:55 [ readJoy1::return#2 ] 
Uplift Scope [vblank] 4: zp[1]:57 [ vblank::$1 ] 4: zp[1]:58 [ vblank::$3 ] 4: zp[1]:59 [ vblank::$5 ] 4: zp[1]:60 [ vblank::$7 ] 0.71: zp[1]:56 [ vblank::joy#0 ] 
Uplift Scope [RICOH_2C02] 
Uplift Scope [RICOH_2A03] 
Uplift Scope [SpriteData] 
Uplift Scope [clrscr] 
Uplift Scope [cputln] 
Uplift Scope [RADIX] 
Uplift Scope [printf_format_number] 
Uplift Scope [printf_buffer_number] 
Uplift Scope [printf_format_string] 
Uplift Scope [__start] 

Uplifting [ppuDataFetch] best 1044626 combination zp[2]:45 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ] reg byte a [ ppuDataFetch::ppuDataRead1_return#0 ] zp[2]:47 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ] reg byte a [ ppuDataFetch::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFetch::ppuDataPrepare1_$1 ] zp[2]:91 [ ppuDataFetch::ppuData#0 ] 
Uplifting [ppuDataTransfer] best 1044014 combination zp[2]:14 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ] zp[2]:16 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] zp[2]:12 [ ppuDataTransfer::size#3 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ] reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ] zp[2]:8 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ] zp[2]:10 [ ppuDataTransfer::cpuData#2 ] 
Uplifting [cscroll] best 1035014 combination reg byte x [ cscroll::y#2 cscroll::y#1 ] zp[2]:41 [ cscroll::line2#2 cscroll::line2#1 ] zp[2]:43 [ cscroll::line1#2 cscroll::line1#1 ] 
Uplifting [ppuDataFill] best 1034690 combination zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] zp[2]:20 [ ppuDataFill::size#5 ] reg byte x [ ppuDataFill::val#10 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ] reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ] zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] 
Uplifting [uctoa_append] best 1022487 combination reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ] reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ] zp[1]:77 [ uctoa_append::sub#0 ] reg byte x [ uctoa_append::return#0 ] zp[2]:75 [ uctoa_append::buffer#0 ] 
Uplifting [ppuDataSet] best 1022469 combination reg byte x [ ppuDataSet::ppuDataPrepare1_$0 ] reg byte x [ ppuDataSet::ppuDataPrepare1_$1 ] reg byte a [ ppuDataSet::val#0 ] zp[2]:86 [ ppuDataSet::ppuData#0 ] 
Uplifting [] best 1022469 combination zp[1]:50 [ conio_cursor_y ] zp[2]:51 [ conio_line_text ] zp[1]:49 [ conio_cursor_x ] zp[1]:54 [ y_scroll ] zp[1]:53 [ x_scroll ] 
Uplifting [cputc] best 1022162 combination reg byte x [ cputc::c#2 cputc::c#0 cputc::c#1 ] 
Uplifting [cputs] best 1021662 combination zp[2]:37 [ cputs::s#2 cputs::s#0 ] reg byte a [ cputs::c#1 ] 
Uplifting [uctoa] best 1020749 combination zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ] zp[1]:27 [ uctoa::started#2 uctoa::started#4 ] zp[1]:74 [ uctoa::digit_value#0 ] zp[2]:72 [ uctoa::buffer#3 ] 
Uplifting [gotoxy] best 1020716 combination reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ] zp[2]:79 [ gotoxy::$6 ] zp[2]:81 [ gotoxy::line_offset#0 ] zp[2]:83 [ gotoxy::$5 ] reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ] 
Uplifting [cputcxy] best 1020567 combination reg byte x [ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ] reg byte a [ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ] reg byte y [ cputcxy::c#4 ] 
Uplifting [main] best 1020217 combination zp[1]:5 [ main::i#2 main::i#1 ] zp[1]:3 [ main::x#10 main::x#1 ] zp[1]:4 [ main::y#10 main::y#1 ] reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ] reg byte a [ main::initNES1_waitForVBlank1_$0 ] zp[1]:62 [ main::initNES1_waitForVBlank2_$0 ] 
Limited combination testing to 100 combinations of 384 possible.
Uplifting [cputsxy] best 1020151 combination reg byte x [ cputsxy::x#0 ] reg byte a [ cputsxy::y#0 ] 
Uplifting [readJoy1] best 1019908 combination reg byte x [ readJoy1::i#2 readJoy1::i#1 ] reg byte a [ readJoy1::$2 ] reg byte a [ readJoy1::joy#2 readJoy1::joy#1 ] zp[1]:65 [ readJoy1::$1 ] zp[1]:55 [ readJoy1::return#2 ] 
Limited combination testing to 100 combinations of 576 possible.
Uplifting [vblank] best 1019892 combination reg byte a [ vblank::$1 ] reg byte a [ vblank::$3 ] reg byte a [ vblank::$5 ] reg byte a [ vblank::$7 ] zp[1]:56 [ vblank::joy#0 ] 
Limited combination testing to 100 combinations of 768 possible.
Uplifting [RICOH_2C02] best 1019892 combination 
Uplifting [RICOH_2A03] best 1019892 combination 
Uplifting [SpriteData] best 1019892 combination 
Uplifting [clrscr] best 1019892 combination 
Uplifting [cputln] best 1019892 combination 
Uplifting [RADIX] best 1019892 combination 
Uplifting [printf_format_number] best 1019892 combination 
Uplifting [printf_buffer_number] best 1019892 combination 
Uplifting [printf_format_string] best 1019892 combination 
Uplifting [__start] best 1019892 combination 
Attempting to uplift remaining variables inzp[1]:77 [ uctoa_append::sub#0 ]
Uplifting [uctoa_append] best 1019892 combination zp[1]:77 [ uctoa_append::sub#0 ] 
Attempting to uplift remaining variables inzp[1]:50 [ conio_cursor_y ]
Uplifting [] best 1019892 combination zp[1]:50 [ conio_cursor_y ] 
Attempting to uplift remaining variables inzp[1]:49 [ conio_cursor_x ]
Uplifting [] best 1019892 combination zp[1]:49 [ conio_cursor_x ] 
Attempting to uplift remaining variables inzp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ]
Uplifting [uctoa] best 1019892 combination zp[1]:25 [ uctoa::digit#2 uctoa::digit#1 ] 
Attempting to uplift remaining variables inzp[1]:27 [ uctoa::started#2 uctoa::started#4 ]
Uplifting [uctoa] best 1019892 combination zp[1]:27 [ uctoa::started#2 uctoa::started#4 ] 
Attempting to uplift remaining variables inzp[1]:74 [ uctoa::digit_value#0 ]
Uplifting [uctoa] best 1019892 combination zp[1]:74 [ uctoa::digit_value#0 ] 
Attempting to uplift remaining variables inzp[1]:5 [ main::i#2 main::i#1 ]
Uplifting [main] best 1019892 combination zp[1]:5 [ main::i#2 main::i#1 ] 
Attempting to uplift remaining variables inzp[1]:3 [ main::x#10 main::x#1 ]
Uplifting [main] best 1019892 combination zp[1]:3 [ main::x#10 main::x#1 ] 
Attempting to uplift remaining variables inzp[1]:4 [ main::y#10 main::y#1 ]
Uplifting [main] best 1019892 combination zp[1]:4 [ main::y#10 main::y#1 ] 
Attempting to uplift remaining variables inzp[1]:62 [ main::initNES1_waitForVBlank2_$0 ]
Uplifting [main] best 1019852 combination reg byte a [ main::initNES1_waitForVBlank2_$0 ] 
Attempting to uplift remaining variables inzp[1]:65 [ readJoy1::$1 ]
Uplifting [readJoy1] best 1019852 combination zp[1]:65 [ readJoy1::$1 ] 
Attempting to uplift remaining variables inzp[1]:55 [ readJoy1::return#2 ]
Uplifting [readJoy1] best 1019846 combination reg byte a [ readJoy1::return#2 ] 
Attempting to uplift remaining variables inzp[1]:54 [ y_scroll ]
Uplifting [] best 1019846 combination zp[1]:54 [ y_scroll ] 
Attempting to uplift remaining variables inzp[1]:53 [ x_scroll ]
Uplifting [] best 1019846 combination zp[1]:53 [ x_scroll ] 
Attempting to uplift remaining variables inzp[1]:56 [ vblank::joy#0 ]
Uplifting [vblank] best 1019841 combination reg byte x [ vblank::joy#0 ] 
Coalescing zero page register [ zp[2]:10 [ ppuDataTransfer::cpuData#2 ] ] with [ zp[2]:16 [ ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] ] with [ zp[2]:72 [ uctoa::buffer#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 ] ] with [ zp[2]:75 [ uctoa_append::buffer#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:74 [ uctoa::digit_value#0 ] ] with [ zp[1]:77 [ uctoa_append::sub#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:79 [ gotoxy::$6 ] ] with [ zp[2]:81 [ gotoxy::line_offset#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:79 [ gotoxy::$6 gotoxy::line_offset#0 ] ] with [ zp[2]:83 [ gotoxy::$5 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ] ] with [ zp[2]:8 [ ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ] ]
Coalescing zero page register [ zp[2]:20 [ ppuDataFill::size#5 ] ] with [ zp[2]:10 [ ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
Coalescing zero page register [ zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ] ] with [ zp[2]:12 [ ppuDataTransfer::size#3 ] ]
Coalescing zero page register [ zp[2]:28 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ] ] with [ zp[2]:14 [ ppuDataTransfer::i#2 ppuDataTransfer::i#1 ] ]
Coalescing zero page register [ zp[2]:79 [ gotoxy::$6 gotoxy::line_offset#0 gotoxy::$5 ] ] with [ zp[2]:37 [ cputs::s#2 cputs::s#0 ] ]
Coalescing zero page register [ zp[2]:86 [ ppuDataSet::ppuData#0 ] ] with [ zp[2]:41 [ cscroll::line2#2 cscroll::line2#1 ] ]
Coalescing zero page register [ zp[2]:45 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ] ] with [ zp[2]:18 [ ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ] ]
Coalescing zero page register [ zp[2]:47 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ] ] with [ zp[2]:20 [ ppuDataFill::size#5 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ] ]
Coalescing zero page register [ zp[2]:91 [ ppuDataFetch::ppuData#0 ] ] with [ zp[2]:23 [ ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::size#3 ] ]
Allocated (was zp[1]:3) zp[1]:2 [ main::x#10 main::x#1 ]
Allocated (was zp[1]:4) zp[1]:3 [ main::y#10 main::y#1 ]
Allocated (was zp[1]:5) zp[1]:4 [ main::i#2 main::i#1 ]
Allocated (was zp[1]:25) zp[1]:5 [ uctoa::digit#2 uctoa::digit#1 ]
Allocated (was zp[1]:27) zp[1]:6 [ uctoa::started#2 uctoa::started#4 ]
Allocated (was zp[2]:28) zp[2]:7 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
Allocated (was zp[2]:43) zp[2]:9 [ cscroll::line1#2 cscroll::line1#1 ]
Allocated (was zp[2]:45) zp[2]:11 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ]
Allocated (was zp[2]:47) zp[2]:13 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ppuDataFill::size#5 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
Allocated (was zp[1]:49) zp[1]:15 [ conio_cursor_x ]
Allocated (was zp[1]:50) zp[1]:16 [ conio_cursor_y ]
Allocated (was zp[2]:51) zp[2]:17 [ conio_line_text ]
Allocated (was zp[1]:53) zp[1]:19 [ x_scroll ]
Allocated (was zp[1]:54) zp[1]:20 [ y_scroll ]
Allocated (was zp[1]:65) zp[1]:21 [ readJoy1::$1 ]
Allocated (was zp[1]:74) zp[1]:22 [ uctoa::digit_value#0 uctoa_append::sub#0 ]
Allocated (was zp[2]:79) zp[2]:23 [ gotoxy::$6 gotoxy::line_offset#0 gotoxy::$5 cputs::s#2 cputs::s#0 ]
Allocated (was zp[2]:86) zp[2]:25 [ ppuDataSet::ppuData#0 cscroll::line2#2 cscroll::line2#1 ]
Allocated (was zp[2]:91) zp[2]:27 [ ppuDataFetch::ppuData#0 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::size#3 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// NES conio printing
/// @file
/// Nintendo Entertainment System (NES
///
/// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
/// https://github.com/gregkrsak/first_nes
/// @file
/// Ricoh 2C02 - NES Picture Processing Unit (PPU)
///
/// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
/// https://en.wikipedia.org/wiki/Picture_Processing_Unit
/// https://wiki.nesdev.com/w/index.php/PPU_registers
/// http://nesdev.com/2C02%20technical%20reference.TXT
/// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018.
  // Upstart
.cpu _6502
  // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
// https://sadistech.com/nesromtool/romdoc.html
// https://forums.nesdev.com/viewtopic.php?f=2&t=9896
// https://github.com/gregkrsak/first_nes
.file [name="nes-conio.nes", type="bin", segments="NesRom"]
.file [name="nes-conio.nes_hdr", type="bin", segments="Header"]
.file [name="nes-conio.nes_prg", type="bin", segments="ProgramRom"]
.file [name="nes-conio.nes_chr", type="bin", segments="CharacterRom"]
.segmentdef Header  [ start=$0000,       min=$0000, max=$000f, fill ]
.segmentdef Tiles   [ start=$0000,       min=$0000, max=$1fff, fill ]
.segmentdef Code    [ start=$c000,       min=$c000, max=$fff9 ]
.segmentdef Data    [ startAfter="Code", min=$c000, max=$fff9 ]
.segmentdef Vectors [ start=$fffa,       min=$fffa, max=$ffff ]
.segmentdef GameRam [start=$200,max=$7ff, virtual]
.segmentdef ProgramRom [ segments="Code, Data, Vectors" ]
.segmentdef CharacterRom [ segments="Tiles" ]
.segmentdef NesRom
.segment NesRom
.segmentout [ segments="Header" ]
.segmentout [ segments="ProgramRom" ]
.segmentout [ segments="CharacterRom" ]
.segment Header
.text   @"NES\$1a"
.byte   $01           // 1x 16KB ROM (PRG)
.byte   $01           // 1x 8KB VROM (CHR)
.byte   %00000001     // Mapper nibble 0000 == No mapping (a simple 16KB PRG + 8KB CHR game)
                      // Mirroring nibble 0001 == Vertical mirroring only
  // Global Constants & labels
  /// Standard Controller Right Button
  .const JOY_RIGHT = 1
  /// Standard Controller Left Button
  .const JOY_LEFT = 2
  /// Standard Controller Down Button
  .const JOY_DOWN = 4
  /// Standard Controller Up Button
  .const JOY_UP = 8
  .const OFFSET_STRUCT_RICOH_2A03_DMC_FREQ = $10
  .const OFFSET_STRUCT_RICOH_2C02_PPUMASK = 1
  .const OFFSET_STRUCT_RICOH_2C02_PPUSTATUS = 2
  .const OFFSET_STRUCT_RICOH_2A03_JOY1 = $16
  .const OFFSET_STRUCT_RICOH_2C02_PPUADDR = 6
  .const OFFSET_STRUCT_RICOH_2C02_PPUDATA = 7
  .const OFFSET_STRUCT_RICOH_2C02_PPUSCROLL = 5
  .const SIZEOF_CHAR = 1
  /// $2000-$23bf	$03c0	Name table 0
  .label PPU_NAME_TABLE_0 = $2000
  /// $23c0-$23ff	$0040	Attribute table 0
  .label PPU_ATTRIBUTE_TABLE_0 = $23c0
  /// $27c0-$27ff	$0040	Attribute table 1
  .label PPU_ATTRIBUTE_TABLE_1 = $27c0
  /// $3000-$3eff	$0f00	Mirrors of $2000-$2eff
  /// $3f00-$3f1f	$0020	Palette RAM indexes
  .label PPU_PALETTE = $3f00
  /// PPU Status Register for reading in ASM
  .label PPU_PPUSTATUS = $2002
  /// PPU Data Register for reading in ASM
  .label PPU_PPUDATA = $2007
  /// APU Frame Counter
  /// generates low-frequency clocks for the channels and an optional 60 Hz interrupt.
  /// https://wiki.nesdev.com/w/index.php/APU_Frame_Counter
  /// ------+-----+---------------------------------------------------------------
  ///  $4017 |	 W  | FR_COUNTER Frame Counter	Set mode and interrupt
  ///  ------+-----+---------------------------------------------------------------
  ///        |   7	| Sequencer mode: 0 selects 4-step sequence, 1 selects 5-step sequence
  ///        |   6	| Interrupt inhibit flag. If set, the frame interrupt flag is cleared, otherwise it is unaffected.
  ///  ------+-----+---------------------------------------------------------------
  /// Side effects	After 3 or 4 CPU clock cycles*, the timer is reset.
  /// If the mode flag is set, then both "quarter frame" and "half frame" signals are also generated.
  .label FR_COUNTER = $4017
  /// Pointer to the start of RAM memory
  .label MEMORY = 0
  /// NES Picture Processing Unit (PPU)
  .label PPU = $2000
  /// NES CPU and audion processing unit (APU)
  .label APU = $4000
  // The current cursor x-position
  .label conio_cursor_x = $f
  // The current cursor y-position
  .label conio_cursor_y = $10
  // The current text cursor line start
  .label conio_line_text = $11
  .label x_scroll = $13
  .label y_scroll = $14
.segment Code
  // __start
__start: {
    jmp __init1
    // __start::__init1
  __init1:
    // [1] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [2] conio_cursor_y = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_y
    // [3] conio_line_text = PPU_NAME_TABLE_0 -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z conio_line_text
    lda #>PPU_NAME_TABLE_0
    sta.z conio_line_text+1
    // [4] x_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z x_scroll
    // [5] y_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z y_scroll
    // [6] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
  __b1_from___init1:
    jmp __b1
    // __start::@1
  __b1:
    // [7] call main
    // [32] phi from __start::@1 to main [phi:__start::@1->main]
  main_from___b1:
    jsr main
    jmp __breturn
    // __start::@return
  __breturn:
    // [8] return 
    rts
}
  // vblank
// NMI Called when the PPU refreshes the screen (also known as the V-Blank period)
vblank: {
    // interrupt(isr_hardware_all_entry) -- isr_hardware_all_entry 
    pha
    txa
    pha
    tya
    pha
    // [10] call readJoy1
    // Read controller 1
    jsr readJoy1
    // [11] readJoy1::return#2 = readJoy1::joy#2
    jmp __b11
    // vblank::@11
  __b11:
    // [12] vblank::joy#0 = readJoy1::return#2 -- vbuxx=vbuaa 
    tax
    // [13] vblank::$1 = vblank::joy#0 & JOY_DOWN -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_DOWN
    // [14] if(0==vblank::$1) goto vblank::@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b1
    jmp __b5
    // vblank::@5
  __b5:
    // [15] y_scroll = ++ y_scroll -- vbuz1=_inc_vbuz1 
    inc.z y_scroll
    // [16] if(y_scroll!=$f0) goto vblank::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$f0
    cmp.z y_scroll
    bne __b1
    jmp __b6
    // vblank::@6
  __b6:
    // [17] y_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z y_scroll
    jmp __b1
    // vblank::@1
  __b1:
    // [18] vblank::$3 = vblank::joy#0 & JOY_UP -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_UP
    // [19] if(0==vblank::$3) goto vblank::@2 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b2
    jmp __b7
    // vblank::@7
  __b7:
    // [20] y_scroll = -- y_scroll -- vbuz1=_dec_vbuz1 
    dec.z y_scroll
    // [21] if(y_scroll!=$ff) goto vblank::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$ff
    cmp.z y_scroll
    bne __b2
    jmp __b8
    // vblank::@8
  __b8:
    // [22] y_scroll = $ef -- vbuz1=vbuc1 
    lda #$ef
    sta.z y_scroll
    jmp __b2
    // vblank::@2
  __b2:
    // [23] vblank::$5 = vblank::joy#0 & JOY_LEFT -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_LEFT
    // [24] if(0==vblank::$5) goto vblank::@3 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b3
    jmp __b9
    // vblank::@9
  __b9:
    // [25] x_scroll = ++ x_scroll -- vbuz1=_inc_vbuz1 
    inc.z x_scroll
    jmp __b3
    // vblank::@3
  __b3:
    // [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_RIGHT
    // [27] if(0==vblank::$7) goto vblank::@4 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b4
    jmp __b10
    // vblank::@10
  __b10:
    // [28] x_scroll = -- x_scroll -- vbuz1=_dec_vbuz1 
    dec.z x_scroll
    jmp __b4
    // vblank::@4
  __b4:
    // [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll -- _deref_pbuc1=vbuz1 
    lda.z x_scroll
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
    // [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll -- _deref_pbuc1=vbuz1 
    lda.z y_scroll
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
    jmp __breturn
    // vblank::@return
  __breturn:
    // [31] return 
    // interrupt(isr_hardware_all_exit) -- isr_hardware_all_exit 
    pla
    tay
    pla
    tax
    pla
    rti
}
  // main
// RESET Called when the NES is reset, including when it is turned on.
main: {
    .const screensizex1_return = $20
    .const screensizey1_return = $1e
    .const screensizey2_return = $1e
    .const screensizex2_return = $20
    .const screensizey3_return = $1e
    .label x = 2
    .label y = 3
    .label i = 4
    jmp initNES1
    // main::initNES1
  initNES1:
    // asm { cld ldx#$ff txs  }
    cld
    ldx #$ff
    txs
    jmp initNES1_disableVideoOutput1
    // main::initNES1_disableVideoOutput1
  initNES1_disableVideoOutput1:
    // [34] *((char *)PPU) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta PPU
    // [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK
    jmp initNES1_disableAudioOutput1
    // main::initNES1_disableAudioOutput1
  initNES1_disableAudioOutput1:
    // [36] *FR_COUNTER = $40 -- _deref_pbuc1=vbuc2 
    lda #$40
    sta FR_COUNTER
    // [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40 -- _deref_pbuc1=vbuc2 
    lda #$40
    sta APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ
    jmp initNES1_clearVBlankFlag1
    // main::initNES1_clearVBlankFlag1
  initNES1_clearVBlankFlag1:
    // asm { ldaPPU_PPUSTATUS  }
    lda PPU_PPUSTATUS
    // [39] phi from main::initNES1_clearVBlankFlag1 to main::initNES1_waitForVBlank1 [phi:main::initNES1_clearVBlankFlag1->main::initNES1_waitForVBlank1]
  initNES1_waitForVBlank1_from_initNES1_clearVBlankFlag1:
    jmp initNES1_waitForVBlank1
    // main::initNES1_waitForVBlank1
  initNES1_waitForVBlank1:
    jmp initNES1_waitForVBlank1___b1
    // main::initNES1_waitForVBlank1_@1
  initNES1_waitForVBlank1___b1:
    // [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #$80
    and PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
    // [41] if(0==main::initNES1_waitForVBlank1_$0) goto main::initNES1_waitForVBlank1_@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq initNES1_waitForVBlank1___b1
    // [42] phi from main::initNES1_waitForVBlank1_@1 to main::initNES1_@1 [phi:main::initNES1_waitForVBlank1_@1->main::initNES1_@1]
  initNES1___b1_from_initNES1_waitForVBlank1___b1:
    // [42] phi main::initNES1_i#2 = 0 [phi:main::initNES1_waitForVBlank1_@1->main::initNES1_@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp initNES1___b1
    // [42] phi from main::initNES1_@1 to main::initNES1_@1 [phi:main::initNES1_@1->main::initNES1_@1]
  initNES1___b1_from_initNES1___b1:
    // [42] phi main::initNES1_i#2 = main::initNES1_i#1 [phi:main::initNES1_@1->main::initNES1_@1#0] -- register_copy 
    jmp initNES1___b1
    // main::initNES1_@1
  initNES1___b1:
    // [43] MEMORY[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY,x
    // [44] (MEMORY+$100)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$100,x
    // [45] (MEMORY+$200)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$200,x
    // [46] (MEMORY+$300)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$300,x
    // [47] (MEMORY+$400)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$400,x
    // [48] (MEMORY+$500)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$500,x
    // [49] (MEMORY+$600)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$600,x
    // [50] (MEMORY+$700)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY+$700,x
    // [51] main::initNES1_i#1 = ++ main::initNES1_i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [52] if(0!=main::initNES1_i#1) goto main::initNES1_@1 -- 0_neq_vbuxx_then_la1 
    cpx #0
    bne initNES1___b1_from_initNES1___b1
    // [53] phi from main::initNES1_@1 to main::initNES1_waitForVBlank2 [phi:main::initNES1_@1->main::initNES1_waitForVBlank2]
  initNES1_waitForVBlank2_from_initNES1___b1:
    jmp initNES1_waitForVBlank2
    // main::initNES1_waitForVBlank2
  initNES1_waitForVBlank2:
    jmp initNES1_waitForVBlank2___b1
    // main::initNES1_waitForVBlank2_@1
  initNES1_waitForVBlank2___b1:
    // [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #$80
    and PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
    // [55] if(0==main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq initNES1_waitForVBlank2___b1
    jmp initNES1___b7
    // main::initNES1_@7
  initNES1___b7:
    // asm { ldaPPU_PPUSTATUS  }
    lda PPU_PPUSTATUS
    // [57] phi from main::initNES1_@7 to main::@6 [phi:main::initNES1_@7->main::@6]
  __b6_from_initNES1___b7:
    jmp __b6
    // main::@6
  __b6:
    // [58] call ppuDataTransfer
  // Transfer the palette
    // [103] phi from main::@6 to ppuDataTransfer [phi:main::@6->ppuDataTransfer]
  ppuDataTransfer_from___b6:
    // [103] phi ppuDataTransfer::size#3 = $20*SIZEOF_CHAR [phi:main::@6->ppuDataTransfer#0] -- vwuz1=vbuc1 
    lda #<$20*SIZEOF_CHAR
    sta.z ppuDataTransfer.size
    lda #>$20*SIZEOF_CHAR
    sta.z ppuDataTransfer.size+1
    // [103] phi ppuDataTransfer::cpuData#2 = (void * const )PALETTE [phi:main::@6->ppuDataTransfer#1] -- pvoz1=pvoc1 
    lda #<PALETTE
    sta.z ppuDataTransfer.cpuData
    lda #>PALETTE
    sta.z ppuDataTransfer.cpuData+1
    // [103] phi ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void * const )PPU_PALETTE [phi:main::@6->ppuDataTransfer#2] -- pvoz1=pvoc1 
    lda #<PPU_PALETTE
    sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
    lda #>PPU_PALETTE
    sta.z ppuDataTransfer.ppuDataPrepare1_ppuData+1
    jsr ppuDataTransfer
    // [59] phi from main::@6 to main::@12 [phi:main::@6->main::@12]
  __b12_from___b6:
    jmp __b12
    // main::@12
  __b12:
    // [60] call ppuDataFill
  // Fill the PPU attribute table
    // [116] phi from main::@12 to ppuDataFill [phi:main::@12->ppuDataFill]
  ppuDataFill_from___b12:
    // [116] phi ppuDataFill::val#10 = 0 [phi:main::@12->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #0
    // [116] phi ppuDataFill::size#5 = $40 [phi:main::@12->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$40
    sta.z ppuDataFill.size
    lda #>$40
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_ATTRIBUTE_TABLE_0 [phi:main::@12->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_ATTRIBUTE_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_ATTRIBUTE_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // [61] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
  __b13_from___b12:
    jmp __b13
    // main::@13
  __b13:
    // [62] call ppuDataFill
    // [116] phi from main::@13 to ppuDataFill [phi:main::@13->ppuDataFill]
  ppuDataFill_from___b13:
    // [116] phi ppuDataFill::val#10 = 0 [phi:main::@13->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #0
    // [116] phi ppuDataFill::size#5 = $40 [phi:main::@13->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$40
    sta.z ppuDataFill.size
    lda #>$40
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_ATTRIBUTE_TABLE_1 [phi:main::@13->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_ATTRIBUTE_TABLE_1
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_ATTRIBUTE_TABLE_1
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // [63] phi from main::@13 to main::@14 [phi:main::@13->main::@14]
  __b14_from___b13:
    jmp __b14
    // main::@14
  __b14:
    // [64] call clrscr
  // Print a string
    // [126] phi from main::@14 to clrscr [phi:main::@14->clrscr]
  clrscr_from___b14:
    jsr clrscr
    // [65] phi from main::@14 to main::screensizex1 [phi:main::@14->main::screensizex1]
  screensizex1_from___b14:
    // [65] phi main::x#10 = 1 [phi:main::@14->main::screensizex1#0] -- vbuz1=vbuc1 
    lda #1
    sta.z x
    jmp screensizex1
    // main::screensizex1
  screensizex1:
    jmp __b7
    // main::@7
  __b7:
    // [66] if(main::x#10<main::screensizex1_return#0-1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #screensizex1_return-1
    bcc __b1
    // [67] phi from main::@7 to main::screensizey2 [phi:main::@7->main::screensizey2]
  screensizey2_from___b7:
    // [67] phi main::y#10 = 1 [phi:main::@7->main::screensizey2#0] -- vbuz1=vbuc1 
    lda #1
    sta.z y
    jmp screensizey2
    // main::screensizey2
  screensizey2:
    jmp __b9
    // main::@9
  __b9:
    // [68] if(main::y#10<main::screensizey2_return#0-3) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z y
    cmp #screensizey2_return-3
    bcc __b2
    // [69] phi from main::@9 to main::screensizey3 [phi:main::@9->main::screensizey3]
  screensizey3_from___b9:
    // [69] phi main::i#2 = 0 [phi:main::@9->main::screensizey3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp screensizey3
    // main::screensizey3
  screensizey3:
    jmp __b11
    // main::@11
  __b11:
    // [70] if(main::i#2<main::screensizey3_return#0) goto main::@3 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #screensizey3_return
    bcc __b3
    jmp __b4
    // main::@4
  __b4:
    // [71] x_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z x_scroll
    // [72] y_scroll = -8 -- vbuz1=vbuc1 
    lda #-8
    sta.z y_scroll
    jmp enableVideoOutput1
    // main::enableVideoOutput1
  enableVideoOutput1:
    // [73] *((char *)PPU) = $80 -- _deref_pbuc1=vbuc2 
    lda #$80
    sta PPU
    // [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e -- _deref_pbuc1=vbuc2 
    lda #$1e
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK
    // [75] phi from main::@5 main::enableVideoOutput1 to main::@5 [phi:main::@5/main::enableVideoOutput1->main::@5]
  __b5_from___b5:
  __b5_from_enableVideoOutput1:
    jmp __b5
  // Infinite loop
    // main::@5
  __b5:
    jmp __b5_from___b5
    // main::@3
  __b3:
    // [76] uctoa::value#1 = main::i#2 & $f -- vbuxx=vbuz1_band_vbuc1 
    lda #$f
    and.z i
    tax
    // [77] call uctoa
    // [132] phi from main::@3 to uctoa [phi:main::@3->uctoa]
  uctoa_from___b3:
    jsr uctoa
    jmp __b17
    // main::@17
  __b17:
    // [78] cputsxy::x#0 = main::i#2 -- vbuxx=vbuz1 
    ldx.z i
    // [79] cputsxy::y#0 = main::i#2 -- vbuaa=vbuz1 
    lda.z i
    // [80] call cputsxy
    jsr cputsxy
    jmp __b18
    // main::@18
  __b18:
    // [81] main::i#1 = ++ main::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [69] phi from main::@18 to main::screensizey3 [phi:main::@18->main::screensizey3]
  screensizey3_from___b18:
    // [69] phi main::i#2 = main::i#1 [phi:main::@18->main::screensizey3#0] -- register_copy 
    jmp screensizey3
    // main::@2
  __b2:
    // [82] cputcxy::y#2 = main::y#10 -- vbuaa=vbuz1 
    lda.z y
    // [83] call cputcxy
    // [157] phi from main::@2 to cputcxy [phi:main::@2->cputcxy]
  cputcxy_from___b2:
    // [157] phi cputcxy::c#4 = 'i' [phi:main::@2->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'i'
    // [157] phi cputcxy::y#4 = cputcxy::y#2 [phi:main::@2->cputcxy#1] -- register_copy 
    // [157] phi cputcxy::x#4 = 1 [phi:main::@2->cputcxy#2] -- vbuxx=vbuc1 
    ldx #1
    jsr cputcxy
    // [84] phi from main::@2 to main::screensizex2 [phi:main::@2->main::screensizex2]
  screensizex2_from___b2:
    jmp screensizex2
    // main::screensizex2
  screensizex2:
    jmp __b10
    // main::@10
  __b10:
    // [85] cputcxy::y#3 = main::y#10 -- vbuaa=vbuz1 
    lda.z y
    // [86] call cputcxy
    // [157] phi from main::@10 to cputcxy [phi:main::@10->cputcxy]
  cputcxy_from___b10:
    // [157] phi cputcxy::c#4 = 'i' [phi:main::@10->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'i'
    // [157] phi cputcxy::y#4 = cputcxy::y#3 [phi:main::@10->cputcxy#1] -- register_copy 
    // [157] phi cputcxy::x#4 = main::screensizex2_return#0-2 [phi:main::@10->cputcxy#2] -- vbuxx=vbuc1 
    ldx #screensizex2_return-2
    jsr cputcxy
    jmp __b16
    // main::@16
  __b16:
    // [87] main::y#1 = ++ main::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [67] phi from main::@16 to main::screensizey2 [phi:main::@16->main::screensizey2]
  screensizey2_from___b16:
    // [67] phi main::y#10 = main::y#1 [phi:main::@16->main::screensizey2#0] -- register_copy 
    jmp screensizey2
    // main::@1
  __b1:
    // [88] cputcxy::x#0 = main::x#10 -- vbuxx=vbuz1 
    ldx.z x
    // [89] call cputcxy
    // [157] phi from main::@1 to cputcxy [phi:main::@1->cputcxy]
  cputcxy_from___b1:
    // [157] phi cputcxy::c#4 = '-' [phi:main::@1->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'-'
    // [157] phi cputcxy::y#4 = 1 [phi:main::@1->cputcxy#1] -- vbuaa=vbuc1 
    lda #1
    // [157] phi cputcxy::x#4 = cputcxy::x#0 [phi:main::@1->cputcxy#2] -- register_copy 
    jsr cputcxy
    // [90] phi from main::@1 to main::screensizey1 [phi:main::@1->main::screensizey1]
  screensizey1_from___b1:
    jmp screensizey1
    // main::screensizey1
  screensizey1:
    jmp __b8
    // main::@8
  __b8:
    // [91] cputcxy::x#1 = main::x#10 -- vbuxx=vbuz1 
    ldx.z x
    // [92] call cputcxy
    // [157] phi from main::@8 to cputcxy [phi:main::@8->cputcxy]
  cputcxy_from___b8:
    // [157] phi cputcxy::c#4 = '-' [phi:main::@8->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'-'
    // [157] phi cputcxy::y#4 = main::screensizey1_return#0-4 [phi:main::@8->cputcxy#1] -- vbuaa=vbuc1 
    lda #screensizey1_return-4
    // [157] phi cputcxy::x#4 = cputcxy::x#1 [phi:main::@8->cputcxy#2] -- register_copy 
    jsr cputcxy
    jmp __b15
    // main::@15
  __b15:
    // [93] main::x#1 = ++ main::x#10 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [65] phi from main::@15 to main::screensizex1 [phi:main::@15->main::screensizex1]
  screensizex1_from___b15:
    // [65] phi main::x#10 = main::x#1 [phi:main::@15->main::screensizex1#0] -- register_copy 
    jmp screensizex1
}
  // readJoy1
// Read Standard Controller #1
// Returns a byte representing the pushed buttons
// - bit 0: right
// - bit 1: left
// - bit 2: down
// - bit 3: up
// - bit 4: start
// - bit 5: select
// - bit 6: B
// - bit 7: A
readJoy1: {
    .label __1 = $15
    // [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1 -- _deref_pbuc1=vbuc2 
    // Latch the controller buttons
    lda #1
    sta APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // [96] phi from readJoy1 to readJoy1::@1 [phi:readJoy1->readJoy1::@1]
  __b1_from_readJoy1:
    // [96] phi readJoy1::joy#2 = 0 [phi:readJoy1->readJoy1::@1#0] -- vbuaa=vbuc1 
    lda #0
    // [96] phi readJoy1::i#2 = 0 [phi:readJoy1->readJoy1::@1#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // readJoy1::@1
  __b1:
    // [97] if(readJoy1::i#2<8) goto readJoy1::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc __b2
    jmp __breturn
    // readJoy1::@return
  __breturn:
    // [98] return 
    rts
    // readJoy1::@2
  __b2:
    // [99] readJoy1::$1 = readJoy1::joy#2 << 1 -- vbuz1=vbuaa_rol_1 
    asl
    sta.z __1
    // [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #1
    and APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // [101] readJoy1::joy#1 = readJoy1::$1 | readJoy1::$2 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __1
    // [102] readJoy1::i#1 = ++ readJoy1::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [96] phi from readJoy1::@2 to readJoy1::@1 [phi:readJoy1::@2->readJoy1::@1]
  __b1_from___b2:
    // [96] phi readJoy1::joy#2 = readJoy1::joy#1 [phi:readJoy1::@2->readJoy1::@1#0] -- register_copy 
    // [96] phi readJoy1::i#2 = readJoy1::i#1 [phi:readJoy1::@2->readJoy1::@1#1] -- register_copy 
    jmp __b1
}
  // ppuDataTransfer
// Transfer a number of bytes from the CPU memory to the PPU memory
// - ppuData : Pointer in the PPU memory
// - cpuData : Pointer to the CPU memory (RAM of ROM)
// - size : The number of bytes to transfer
// void ppuDataTransfer(__zp($b) void * const ppuData, __zp($d) void * const cpuData, __zp($1b) unsigned int size)
ppuDataTransfer: {
    .label ppuDataPrepare1_ppuData = $b
    .label cpuSrc = $d
    .label i = 7
    .label ppuData = $b
    .label cpuData = $d
    .label size = $1b
    jmp ppuDataPrepare1
    // ppuDataTransfer::ppuDataPrepare1
  ppuDataPrepare1:
    // [104] ppuDataTransfer::ppuDataPrepare1_$0 = byte1  ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuDataPrepare1_ppuData+1
    // [105] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [106] ppuDataTransfer::ppuDataPrepare1_$1 = byte0  ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuDataPrepare1_ppuData
    // [107] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    jmp __b3
    // ppuDataTransfer::@3
  __b3:
    // [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2
    // [109] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
  __b1_from___b3:
    // [109] phi ppuDataTransfer::cpuSrc#2 = ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
    // [109] phi ppuDataTransfer::i#2 = 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b1
    // ppuDataTransfer::@1
  __b1:
    // [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z size+1
    bcc __b2
    bne !+
    lda.z i
    cmp.z size
    bcc __b2
  !:
    jmp __breturn
    // ppuDataTransfer::@return
  __breturn:
    // [111] return 
    rts
    // ppuDataTransfer::@2
  __b2:
    // [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (cpuSrc),y
    jmp ppuDataPut1
    // ppuDataTransfer::ppuDataPut1
  ppuDataPut1:
    // [113] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    jmp __b4
    // ppuDataTransfer::@4
  __b4:
    // [114] ppuDataTransfer::cpuSrc#1 = ++ ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
    inc.z cpuSrc
    bne !+
    inc.z cpuSrc+1
  !:
    // [115] ppuDataTransfer::i#1 = ++ ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [109] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
  __b1_from___b4:
    // [109] phi ppuDataTransfer::cpuSrc#2 = ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
    // [109] phi ppuDataTransfer::i#2 = ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
    jmp __b1
}
  // ppuDataFill
// Fill a number of bytes in the PPU memory
// - ppuData : Pointer in the PPU memory
// - size : The number of bytes to transfer
// void ppuDataFill(void * const ppuData, __register(X) char val, __zp($d) unsigned int size)
ppuDataFill: {
    .label ppuDataPrepare1_ppuData = $b
    .label i = $1b
    .label size = $d
    jmp ppuDataPrepare1
    // ppuDataFill::ppuDataPrepare1
  ppuDataPrepare1:
    // [117] ppuDataFill::ppuDataPrepare1_$0 = byte1  ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuDataPrepare1_ppuData+1
    // [118] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [119] ppuDataFill::ppuDataPrepare1_$1 = byte0  ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuDataPrepare1_ppuData
    // [120] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [121] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
  __b1_from_ppuDataPrepare1:
    // [121] phi ppuDataFill::i#2 = 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b1
  // Transfer to PPU
    // ppuDataFill::@1
  __b1:
    // [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z size+1
    bcc ppuDataPut1
    bne !+
    lda.z i
    cmp.z size
    bcc ppuDataPut1
  !:
    jmp __breturn
    // ppuDataFill::@return
  __breturn:
    // [123] return 
    rts
    // ppuDataFill::ppuDataPut1
  ppuDataPut1:
    // [124] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataFill::val#10 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    jmp __b2
    // ppuDataFill::@2
  __b2:
    // [125] ppuDataFill::i#1 = ++ ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [121] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
  __b1_from___b2:
    // [121] phi ppuDataFill::i#2 = ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
    jmp __b1
}
  // clrscr
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
clrscr: {
    // [127] call ppuDataFill
    // [116] phi from clrscr to ppuDataFill [phi:clrscr->ppuDataFill]
  ppuDataFill_from_clrscr:
    // [116] phi ppuDataFill::val#10 = ' ' [phi:clrscr->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #' '
    // [116] phi ppuDataFill::size#5 = $3c0 [phi:clrscr->ppuDataFill#1] -- vwuz1=vwuc1 
    lda #<$3c0
    sta.z ppuDataFill.size
    lda #>$3c0
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_NAME_TABLE_0 [phi:clrscr->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_NAME_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_NAME_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    jmp __b1
    // clrscr::@1
  __b1:
    // [128] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [129] conio_cursor_y = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_y
    // [130] conio_line_text = PPU_NAME_TABLE_0 -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z conio_line_text
    lda #>PPU_NAME_TABLE_0
    sta.z conio_line_text+1
    jmp __breturn
    // clrscr::@return
  __breturn:
    // [131] return 
    rts
}
  // uctoa
// Converts unsigned number value to a string representing it in RADIX format.
// If the leading digits are zero they are not included in the string.
// - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX)
// void uctoa(__register(X) char value, __zp(7) char *buffer, char radix)
uctoa: {
    .const max_digits = 2
    .label digit_value = $16
    .label buffer = 7
    .label digit = 5
    .label started = 6
    // [133] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1]
  __b1_from_uctoa:
    // [133] phi uctoa::buffer#11 = num_buffer [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 
    lda #<num_buffer
    sta.z buffer
    lda #>num_buffer
    sta.z buffer+1
    // [133] phi uctoa::started#2 = 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z started
    // [133] phi uctoa::value#2 = uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy 
    // [133] phi uctoa::digit#2 = 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z digit
    jmp __b1
    // uctoa::@1
  __b1:
    // [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z digit
    cmp #max_digits-1
    bcc __b2
    jmp __b3
    // uctoa::@3
  __b3:
    // [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    // [136] uctoa::buffer#3 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [137] *uctoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (buffer),y
    jmp __breturn
    // uctoa::@return
  __breturn:
    // [138] return 
    rts
    // uctoa::@2
  __b2:
    // [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2] -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z digit
    lda RADIX_HEXADECIMAL_VALUES_CHAR,y
    sta.z digit_value
    // [140] if(0!=uctoa::started#2) goto uctoa::@5 -- 0_neq_vbuz1_then_la1 
    lda.z started
    bne __b5
    jmp __b7
    // uctoa::@7
  __b7:
    // [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1 
    cpx.z digit_value
    bcs __b5
    // [142] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4]
  __b4_from___b7:
    // [142] phi uctoa::buffer#14 = uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy 
    // [142] phi uctoa::started#4 = uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy 
    // [142] phi uctoa::value#6 = uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy 
    jmp __b4
    // uctoa::@4
  __b4:
    // [143] uctoa::digit#1 = ++ uctoa::digit#2 -- vbuz1=_inc_vbuz1 
    inc.z digit
    // [133] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1]
  __b1_from___b4:
    // [133] phi uctoa::buffer#11 = uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy 
    // [133] phi uctoa::started#2 = uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy 
    // [133] phi uctoa::value#2 = uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy 
    // [133] phi uctoa::digit#2 = uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy 
    jmp __b1
    // uctoa::@5
  __b5:
    // [144] uctoa_append::buffer#0 = uctoa::buffer#11
    // [145] uctoa_append::value#0 = uctoa::value#2
    // [146] uctoa_append::sub#0 = uctoa::digit_value#0
    // [147] call uctoa_append
    // [164] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append]
  uctoa_append_from___b5:
    jsr uctoa_append
    // [148] uctoa_append::return#0 = uctoa_append::value#2
    jmp __b6
    // uctoa::@6
  __b6:
    // [149] uctoa::value#0 = uctoa_append::return#0
    // [150] uctoa::buffer#4 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [142] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4]
  __b4_from___b6:
    // [142] phi uctoa::buffer#14 = uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy 
    // [142] phi uctoa::started#4 = 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 
    lda #1
    sta.z started
    // [142] phi uctoa::value#6 = uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy 
    jmp __b4
}
  // cputsxy
// Move cursor and output a NUL-terminated string
// Same as "gotoxy (x, y); puts (s);"
// void cputsxy(__register(X) char x, __register(A) char y, const char *s)
cputsxy: {
    // [151] gotoxy::x#2 = cputsxy::x#0
    // [152] gotoxy::y#2 = cputsxy::y#0
    // [153] call gotoxy
    // [171] phi from cputsxy to gotoxy [phi:cputsxy->gotoxy]
  gotoxy_from_cputsxy:
    // [171] phi gotoxy::x#4 = gotoxy::x#2 [phi:cputsxy->gotoxy#0] -- register_copy 
    // [171] phi gotoxy::y#4 = gotoxy::y#2 [phi:cputsxy->gotoxy#1] -- register_copy 
    jsr gotoxy
    // [154] phi from cputsxy to cputsxy::@1 [phi:cputsxy->cputsxy::@1]
  __b1_from_cputsxy:
    jmp __b1
    // cputsxy::@1
  __b1:
    // [155] call cputs
    // [185] phi from cputsxy::@1 to cputs [phi:cputsxy::@1->cputs]
  cputs_from___b1:
    jsr cputs
    jmp __breturn
    // cputsxy::@return
  __breturn:
    // [156] return 
    rts
}
  // cputcxy
// Move cursor and output one character
// Same as "gotoxy (x, y); cputc (c);"
// void cputcxy(__register(X) char x, __register(A) char y, __register(Y) char c)
cputcxy: {
    // [158] gotoxy::x#1 = cputcxy::x#4
    // [159] gotoxy::y#1 = cputcxy::y#4
    // [160] call gotoxy
    // [171] phi from cputcxy to gotoxy [phi:cputcxy->gotoxy]
  gotoxy_from_cputcxy:
    // [171] phi gotoxy::x#4 = gotoxy::x#1 [phi:cputcxy->gotoxy#0] -- register_copy 
    // [171] phi gotoxy::y#4 = gotoxy::y#1 [phi:cputcxy->gotoxy#1] -- register_copy 
    jsr gotoxy
    jmp __b1
    // cputcxy::@1
  __b1:
    // [161] cputc::c#0 = cputcxy::c#4 -- vbuxx=vbuyy 
    tya
    tax
    // [162] call cputc
    // [193] phi from cputcxy::@1 to cputc [phi:cputcxy::@1->cputc]
  cputc_from___b1:
    // [193] phi cputc::c#2 = cputc::c#0 [phi:cputcxy::@1->cputc#0] -- register_copy 
    jsr cputc
    jmp __breturn
    // cputcxy::@return
  __breturn:
    // [163] return 
    rts
}
  // uctoa_append
// Used to convert a single digit of an unsigned number value to a string representation
// Counts a single digit up from '0' as long as the value is larger than sub.
// Each time the digit is increased sub is subtracted from value.
// - buffer : pointer to the char that receives the digit
// - value : The value where the digit will be derived from
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
//        (For decimal the subs used are 10000, 1000, 100, 10, 1)
// returns : the value reduced by sub * digit so that it is less than sub.
// __register(X) char uctoa_append(__zp(7) char *buffer, __register(X) char value, __zp($16) char sub)
uctoa_append: {
    .label buffer = 7
    .label sub = $16
    // [165] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1]
  __b1_from_uctoa_append:
    // [165] phi uctoa_append::digit#2 = 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1 
    ldy #0
    // [165] phi uctoa_append::value#2 = uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy 
    jmp __b1
    // uctoa_append::@1
  __b1:
    // [166] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1 
    cpx.z sub
    bcs __b2
    jmp __b3
    // uctoa_append::@3
  __b3:
    // [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuyy 
    lda DIGITS,y
    ldy #0
    sta (buffer),y
    jmp __breturn
    // uctoa_append::@return
  __breturn:
    // [168] return 
    rts
    // uctoa_append::@2
  __b2:
    // [169] uctoa_append::digit#1 = ++ uctoa_append::digit#2 -- vbuyy=_inc_vbuyy 
    iny
    // [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1 
    txa
    sec
    sbc.z sub
    tax
    // [165] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1]
  __b1_from___b2:
    // [165] phi uctoa_append::digit#2 = uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy 
    // [165] phi uctoa_append::value#2 = uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy 
    jmp __b1
}
  // gotoxy
// Set the cursor to the specified position
// void gotoxy(__register(X) char x, __register(A) char y)
gotoxy: {
    .label __5 = $17
    .label __6 = $17
    .label line_offset = $17
    // [172] if(gotoxy::y#4<$1e+1) goto gotoxy::@3 -- vbuaa_lt_vbuc1_then_la1 
    cmp #$1e+1
    bcc __b3_from_gotoxy
    // [174] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
  __b1_from_gotoxy:
    // [174] phi gotoxy::y#5 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuaa=vbuc1 
    lda #0
    jmp __b1
    // [173] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
  __b3_from_gotoxy:
    jmp __b3
    // gotoxy::@3
  __b3:
    // [174] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
  __b1_from___b3:
    // [174] phi gotoxy::y#5 = gotoxy::y#4 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy 
    jmp __b1
    // gotoxy::@1
  __b1:
    // [175] if(gotoxy::x#4<$20) goto gotoxy::@4 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$20
    bcc __b4_from___b1
    // [177] phi from gotoxy::@1 to gotoxy::@2 [phi:gotoxy::@1->gotoxy::@2]
  __b2_from___b1:
    // [177] phi gotoxy::x#5 = 0 [phi:gotoxy::@1->gotoxy::@2#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b2
    // [176] phi from gotoxy::@1 to gotoxy::@4 [phi:gotoxy::@1->gotoxy::@4]
  __b4_from___b1:
    jmp __b4
    // gotoxy::@4
  __b4:
    // [177] phi from gotoxy::@4 to gotoxy::@2 [phi:gotoxy::@4->gotoxy::@2]
  __b2_from___b4:
    // [177] phi gotoxy::x#5 = gotoxy::x#4 [phi:gotoxy::@4->gotoxy::@2#0] -- register_copy 
    jmp __b2
    // gotoxy::@2
  __b2:
    // [178] conio_cursor_x = gotoxy::x#5 -- vbuz1=vbuxx 
    stx.z conio_cursor_x
    // [179] conio_cursor_y = gotoxy::y#5 -- vbuz1=vbuaa 
    sta.z conio_cursor_y
    // [180] gotoxy::$6 = (unsigned int)gotoxy::y#5 -- vwuz1=_word_vbuaa 
    sta.z __6
    lda #0
    sta.z __6+1
    // [181] gotoxy::line_offset#0 = gotoxy::$6 << 5 -- vwuz1=vwuz1_rol_5 
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    // [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __5
    clc
    adc #<PPU_NAME_TABLE_0
    sta.z __5
    lda.z __5+1
    adc #>PPU_NAME_TABLE_0
    sta.z __5+1
    // [183] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2 
    lda.z __5
    sta.z conio_line_text
    lda.z __5+1
    sta.z conio_line_text+1
    jmp __breturn
    // gotoxy::@return
  __breturn:
    // [184] return 
    rts
}
  // cputs
// Output a NUL-terminated string at the current cursor position
// void cputs(__zp($17) const char *s)
cputs: {
    .label s = $17
    // [186] phi from cputs to cputs::@1 [phi:cputs->cputs::@1]
  __b1_from_cputs:
    // [186] phi cputs::s#2 = num_buffer [phi:cputs->cputs::@1#0] -- pbuz1=pbuc1 
    lda #<num_buffer
    sta.z s
    lda #>num_buffer
    sta.z s+1
    jmp __b1
    // cputs::@1
  __b1:
    // [187] cputs::c#1 = *cputs::s#2 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (s),y
    // [188] cputs::s#0 = ++ cputs::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [189] if(0!=cputs::c#1) goto cputs::@2 -- 0_neq_vbuaa_then_la1 
    cmp #0
    bne __b2
    jmp __breturn
    // cputs::@return
  __breturn:
    // [190] return 
    rts
    // cputs::@2
  __b2:
    // [191] cputc::c#1 = cputs::c#1 -- vbuxx=vbuaa 
    tax
    // [192] call cputc
    // [193] phi from cputs::@2 to cputc [phi:cputs::@2->cputc]
  cputc_from___b2:
    // [193] phi cputc::c#2 = cputc::c#1 [phi:cputs::@2->cputc#0] -- register_copy 
    jsr cputc
    // [186] phi from cputs::@2 to cputs::@1 [phi:cputs::@2->cputs::@1]
  __b1_from___b2:
    // [186] phi cputs::s#2 = cputs::s#0 [phi:cputs::@2->cputs::@1#0] -- register_copy 
    jmp __b1
}
  // cputc
// Output one character at the current cursor position
// Moves the cursor forward. Scrolls the entire screen if needed
// void cputc(__register(X) char c)
cputc: {
    // [194] if(cputc::c#2==' ') goto cputc::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #'\n'
    beq __b1_from_cputc
    jmp __b2
    // cputc::@2
  __b2:
    // [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x -- pbuz1=pbuz2_plus_vbuz3 
    lda.z conio_cursor_x
    clc
    adc.z conio_line_text
    sta.z ppuDataSet.ppuData
    lda #0
    adc.z conio_line_text+1
    sta.z ppuDataSet.ppuData+1
    // [196] ppuDataSet::val#0 = cputc::c#2 -- vbuaa=vbuxx 
    txa
    // [197] call ppuDataSet
    // [205] phi from cputc::@2 to ppuDataSet [phi:cputc::@2->ppuDataSet]
  ppuDataSet_from___b2:
    jsr ppuDataSet
    jmp __b4
    // cputc::@4
  __b4:
    // [198] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_x
    // [199] if(conio_cursor_x!=$20) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$20
    cmp.z conio_cursor_x
    bne __breturn
    // [200] phi from cputc::@4 to cputc::@3 [phi:cputc::@4->cputc::@3]
  __b3_from___b4:
    jmp __b3
    // cputc::@3
  __b3:
    // [201] call cputln
    jsr cputln
    jmp __breturn
    // cputc::@return
  __breturn:
    // [202] return 
    rts
    // [203] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
  __b1_from_cputc:
    jmp __b1
    // cputc::@1
  __b1:
    // [204] call cputln
    jsr cputln
    jmp __breturn
}
  // ppuDataSet
// Set one byte in PPU memory
// - ppuData : Pointer in the PPU memory
// - val : The value to set
// void ppuDataSet(__zp($19) char * const ppuData, __register(A) char val)
ppuDataSet: {
    .label ppuData = $19
    jmp ppuDataPrepare1
    // ppuDataSet::ppuDataPrepare1
  ppuDataPrepare1:
    // [206] ppuDataSet::ppuDataPrepare1_$0 = byte1  (void * const )ppuDataSet::ppuData#0 -- vbuxx=_byte1_pvoz1 
    ldx.z ppuData+1
    // [207] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [208] ppuDataSet::ppuDataPrepare1_$1 = byte0  (void * const )ppuDataSet::ppuData#0 -- vbuxx=_byte0_pvoz1 
    ldx.z ppuData
    // [209] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    jmp ppuDataPut1
    // ppuDataSet::ppuDataPut1
  ppuDataPut1:
    // [210] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataSet::val#0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    jmp __breturn
    // ppuDataSet::@return
  __breturn:
    // [211] return 
    rts
}
  // cputln
// Print a newline
cputln: {
    // [212] conio_line_text = conio_line_text + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z conio_line_text
    sta.z conio_line_text
    bcc !+
    inc.z conio_line_text+1
  !:
    // [213] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // [214] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_y
    // [215] call cscroll
    jsr cscroll
    jmp __breturn
    // cputln::@return
  __breturn:
    // [216] return 
    rts
}
  // cscroll
// Scroll the entire screen if the cursor is beyond the last line
cscroll: {
    // Scroll lines up
    .label line1 = 9
    .label line2 = $19
    // [217] if(conio_cursor_y!=$1e) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$1e
    cmp.z conio_cursor_y
    bne __breturn
    // [218] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
  __b1_from_cscroll:
    // [218] phi cscroll::line1#2 = PPU_NAME_TABLE_0 [phi:cscroll->cscroll::@1#0] -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z line1
    lda #>PPU_NAME_TABLE_0
    sta.z line1+1
    // [218] phi cscroll::line2#2 = PPU_NAME_TABLE_0+$20 [phi:cscroll->cscroll::@1#1] -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0+$20
    sta.z line2
    lda #>PPU_NAME_TABLE_0+$20
    sta.z line2+1
    // [218] phi cscroll::y#2 = 0 [phi:cscroll->cscroll::@1#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // cscroll::@1
  __b1:
    // [219] if(cscroll::y#2<$1e-1) goto cscroll::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$1e-1
    bcc __b2
    // [220] phi from cscroll::@1 to cscroll::@3 [phi:cscroll::@1->cscroll::@3]
  __b3_from___b1:
    jmp __b3
    // cscroll::@3
  __b3:
    // [221] call ppuDataFill
  // Fill last line with space
    // [116] phi from cscroll::@3 to ppuDataFill [phi:cscroll::@3->ppuDataFill]
  ppuDataFill_from___b3:
    // [116] phi ppuDataFill::val#10 = ' ' [phi:cscroll::@3->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #' '
    // [116] phi ppuDataFill::size#5 = $20 [phi:cscroll::@3->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$20
    sta.z ppuDataFill.size
    lda #>$20
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_NAME_TABLE_0+(unsigned int)$1e*$20-$20 [phi:cscroll::@3->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_NAME_TABLE_0+$1e*$20-$20
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_NAME_TABLE_0+$1e*$20-$20
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    jmp __b6
    // cscroll::@6
  __b6:
    // [222] conio_line_text = conio_line_text - $20 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_text
    sbc #$20
    sta.z conio_line_text
    lda.z conio_line_text+1
    sbc #0
    sta.z conio_line_text+1
    // [223] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1 
    dec.z conio_cursor_y
    jmp __breturn
    // cscroll::@return
  __breturn:
    // [224] return 
    rts
    // cscroll::@2
  __b2:
    // [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2 -- pvoz1=pvoz2 
    lda.z line2
    sta.z ppuDataFetch.ppuData
    lda.z line2+1
    sta.z ppuDataFetch.ppuData+1
    // [226] call ppuDataFetch
    // [232] phi from cscroll::@2 to ppuDataFetch [phi:cscroll::@2->ppuDataFetch]
  ppuDataFetch_from___b2:
    jsr ppuDataFetch
    jmp __b4
    // cscroll::@4
  __b4:
    // [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2 -- pvoz1=pvoz2 
    lda.z line1
    sta.z ppuDataTransfer.ppuData
    lda.z line1+1
    sta.z ppuDataTransfer.ppuData+1
    // [228] call ppuDataTransfer
    // [103] phi from cscroll::@4 to ppuDataTransfer [phi:cscroll::@4->ppuDataTransfer]
  ppuDataTransfer_from___b4:
    // [103] phi ppuDataTransfer::size#3 = $20 [phi:cscroll::@4->ppuDataTransfer#0] -- vwuz1=vbuc1 
    lda #<$20
    sta.z ppuDataTransfer.size
    lda #>$20
    sta.z ppuDataTransfer.size+1
    // [103] phi ppuDataTransfer::cpuData#2 = (void * const )conio_cscroll_buffer [phi:cscroll::@4->ppuDataTransfer#1] -- pvoz1=pvoc1 
    lda #<conio_cscroll_buffer
    sta.z ppuDataTransfer.cpuData
    lda #>conio_cscroll_buffer
    sta.z ppuDataTransfer.cpuData+1
    // [103] phi ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 [phi:cscroll::@4->ppuDataTransfer#2] -- register_copy 
    jsr ppuDataTransfer
    jmp __b5
    // cscroll::@5
  __b5:
    // [229] cscroll::line1#1 = cscroll::line1#2 + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z line1
    sta.z line1
    bcc !+
    inc.z line1+1
  !:
    // [230] cscroll::line2#1 = cscroll::line2#2 + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z line2
    sta.z line2
    bcc !+
    inc.z line2+1
  !:
    // [231] cscroll::y#1 = ++ cscroll::y#2 -- vbuxx=_inc_vbuxx 
    inx
    // [218] phi from cscroll::@5 to cscroll::@1 [phi:cscroll::@5->cscroll::@1]
  __b1_from___b5:
    // [218] phi cscroll::line1#2 = cscroll::line1#1 [phi:cscroll::@5->cscroll::@1#0] -- register_copy 
    // [218] phi cscroll::line2#2 = cscroll::line2#1 [phi:cscroll::@5->cscroll::@1#1] -- register_copy 
    // [218] phi cscroll::y#2 = cscroll::y#1 [phi:cscroll::@5->cscroll::@1#2] -- register_copy 
    jmp __b1
}
  // ppuDataFetch
// Transfer a number of bytes from the PPU memory to the CPU memory
// - cpuData : Pointer to the CPU memory (RAM of ROM)
// - ppuData : Pointer in the PPU memory
// - size : The number of bytes to transfer
// void ppuDataFetch(void * const cpuData, __zp($1b) void * const ppuData, unsigned int size)
ppuDataFetch: {
    .const size = $20
    .label cpuData = conio_cscroll_buffer
    // Fetch from PPU to CPU
    .label cpuDst = $d
    .label i = $b
    .label ppuData = $1b
    jmp ppuDataPrepare1
    // ppuDataFetch::ppuDataPrepare1
  ppuDataPrepare1:
    // [233] ppuDataFetch::ppuDataPrepare1_$0 = byte1  ppuDataFetch::ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuData+1
    // [234] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [235] ppuDataFetch::ppuDataPrepare1_$1 = byte0  ppuDataFetch::ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuData
    // [236] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    jmp __b2
    // ppuDataFetch::@2
  __b2:
    // asm { ldaPPU_PPUDATA  }
    // Perform a dummy-read to discard the current value in the data read buffer and update it with the first byte from the PPU address
    lda PPU_PPUDATA
    // [238] phi from ppuDataFetch::@2 to ppuDataFetch::@1 [phi:ppuDataFetch::@2->ppuDataFetch::@1]
  __b1_from___b2:
    // [238] phi ppuDataFetch::cpuDst#2 = (char *)ppuDataFetch::cpuData#0 [phi:ppuDataFetch::@2->ppuDataFetch::@1#0] -- pbuz1=pbuc1 
    lda #<cpuData
    sta.z cpuDst
    lda #>cpuData
    sta.z cpuDst+1
    // [238] phi ppuDataFetch::i#2 = 0 [phi:ppuDataFetch::@2->ppuDataFetch::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    lda #>0
    sta.z i+1
    jmp __b1
    // ppuDataFetch::@1
  __b1:
    // [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1 -- vwuz1_lt_vwuc1_then_la1 
    lda.z i+1
    cmp #>size
    bcc ppuDataRead1
    bne !+
    lda.z i
    cmp #<size
    bcc ppuDataRead1
  !:
    jmp __breturn
    // ppuDataFetch::@return
  __breturn:
    // [240] return 
    rts
    // ppuDataFetch::ppuDataRead1
  ppuDataRead1:
    // [241] ppuDataFetch::ppuDataRead1_return#0 = *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) -- vbuaa=_deref_pbuc1 
    lda PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    jmp __b3
    // ppuDataFetch::@3
  __b3:
    // [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (cpuDst),y
    // [243] ppuDataFetch::cpuDst#1 = ++ ppuDataFetch::cpuDst#2 -- pbuz1=_inc_pbuz1 
    inc.z cpuDst
    bne !+
    inc.z cpuDst+1
  !:
    // [244] ppuDataFetch::i#1 = ++ ppuDataFetch::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [238] phi from ppuDataFetch::@3 to ppuDataFetch::@1 [phi:ppuDataFetch::@3->ppuDataFetch::@1]
  __b1_from___b3:
    // [238] phi ppuDataFetch::cpuDst#2 = ppuDataFetch::cpuDst#1 [phi:ppuDataFetch::@3->ppuDataFetch::@1#0] -- register_copy 
    // [238] phi ppuDataFetch::i#2 = ppuDataFetch::i#1 [phi:ppuDataFetch::@3->ppuDataFetch::@1#1] -- register_copy 
    jmp __b1
}
  // File Data
.segment GameRam
  // Buffer used for scrolling the NES screen
  conio_cscroll_buffer: .fill $20, 0
.segment Data
  // The digits used for numbers
  DIGITS: .text "0123456789abcdef"
  // Values of hexadecimal digits
  RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10
.segment GameRam
  num_buffer: .fill $b, 0
.segment Data
  // Color Palette
  PALETTE: .byte 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $f, $30, 8, 1, $f, $18, 8, 1, $30, $37, $1a, $f, $f, $f, $f
.segment Tiles
TILES:
.var filechargen = LoadBinary("characters.901225-01.bin")
     .for(var c=0; c<256; c++) {
        // Plane 0
        .fill 8, filechargen.get(c*8+i)
        // Plane 1
        .fill 8, 0
    }

.segment Vectors
  VECTORS: .word vblank, main, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b11
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b2
Removing instruction jmp __b9
Removing instruction jmp __b3
Removing instruction jmp __b10
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp initNES1
Removing instruction jmp initNES1_disableVideoOutput1
Removing instruction jmp initNES1_disableAudioOutput1
Removing instruction jmp initNES1_clearVBlankFlag1
Removing instruction jmp initNES1_waitForVBlank1
Removing instruction jmp initNES1_waitForVBlank1___b1
Removing instruction jmp initNES1___b1
Removing instruction jmp initNES1_waitForVBlank2
Removing instruction jmp initNES1_waitForVBlank2___b1
Removing instruction jmp initNES1___b7
Removing instruction jmp __b6
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp screensizex1
Removing instruction jmp __b7
Removing instruction jmp screensizey2
Removing instruction jmp __b9
Removing instruction jmp screensizey3
Removing instruction jmp __b11
Removing instruction jmp __b4
Removing instruction jmp enableVideoOutput1
Removing instruction jmp __b5
Removing instruction jmp __b17
Removing instruction jmp __b18
Removing instruction jmp screensizex2
Removing instruction jmp __b10
Removing instruction jmp __b16
Removing instruction jmp screensizey1
Removing instruction jmp __b8
Removing instruction jmp __b15
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp ppuDataPrepare1
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp ppuDataPut1
Removing instruction jmp __b4
Removing instruction jmp ppuDataPrepare1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b7
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b4
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp ppuDataPrepare1
Removing instruction jmp ppuDataPut1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b6
Removing instruction jmp __breturn
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp ppuDataPrepare1
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #$40
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Removing instruction lda #0
Replacing instruction lda.z i with TXA
Replacing instruction ldx #0 with TAX
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #0
Removing instruction lda #0
Replacing instruction ldy #0 with TAY
Removing instruction lda #>0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label initNES1_waitForVBlank1___b1 with initNES1_waitForVBlank1
Replacing label initNES1___b1_from_initNES1___b1 with initNES1___b1
Replacing label initNES1_waitForVBlank2___b1 with initNES1_waitForVBlank2
Replacing label screensizey3 with __b11
Replacing label screensizey2 with __b9
Replacing label screensizex1 with __b7
Replacing label __b3_from_gotoxy with __b1
Replacing label __b4_from___b1 with __b2
Replacing label __b1_from_cputc with __b1
Removing instruction __b1_from___init1:
Removing instruction main_from___b1:
Removing instruction initNES1_waitForVBlank1_from_initNES1_clearVBlankFlag1:
Removing instruction initNES1_waitForVBlank1___b1:
Removing instruction initNES1___b1_from_initNES1___b1:
Removing instruction initNES1_waitForVBlank2_from_initNES1___b1:
Removing instruction initNES1_waitForVBlank2___b1:
Removing instruction __b6_from_initNES1___b7:
Removing instruction __b12_from___b6:
Removing instruction __b13_from___b12:
Removing instruction ppuDataFill_from___b13:
Removing instruction __b14_from___b13:
Removing instruction screensizex1:
Removing instruction screensizey2:
Removing instruction screensizey3:
Removing instruction __b5_from_enableVideoOutput1:
Removing instruction screensizex2_from___b2:
Removing instruction screensizex2:
Removing instruction screensizey1_from___b1:
Removing instruction screensizey1:
Removing instruction __b1_from___b3:
Removing instruction __b4_from___b7:
Removing instruction uctoa_append_from___b5:
Removing instruction __b1_from_cputsxy:
Removing instruction cputs_from___b1:
Removing instruction __b3_from_gotoxy:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Removing instruction __b4_from___b1:
Removing instruction __b4:
Removing instruction __b2_from___b4:
Removing instruction __b3_from___b4:
Removing instruction __b1_from_cputc:
Removing instruction __b3_from___b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __init1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b11:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __breturn:
Removing instruction initNES1:
Removing instruction initNES1_disableVideoOutput1:
Removing instruction initNES1_disableAudioOutput1:
Removing instruction initNES1_clearVBlankFlag1:
Removing instruction initNES1___b1_from_initNES1_waitForVBlank1___b1:
Removing instruction initNES1___b7:
Removing instruction __b6:
Removing instruction ppuDataTransfer_from___b6:
Removing instruction __b12:
Removing instruction ppuDataFill_from___b12:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction clrscr_from___b14:
Removing instruction screensizex1_from___b14:
Removing instruction screensizey2_from___b7:
Removing instruction screensizey3_from___b9:
Removing instruction __b4:
Removing instruction enableVideoOutput1:
Removing instruction __b5:
Removing instruction uctoa_from___b3:
Removing instruction __b17:
Removing instruction __b18:
Removing instruction screensizey3_from___b18:
Removing instruction cputcxy_from___b2:
Removing instruction __b10:
Removing instruction cputcxy_from___b10:
Removing instruction __b16:
Removing instruction screensizey2_from___b16:
Removing instruction cputcxy_from___b1:
Removing instruction __b8:
Removing instruction cputcxy_from___b8:
Removing instruction __b15:
Removing instruction screensizex1_from___b15:
Removing instruction __b1_from_readJoy1:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction ppuDataPrepare1:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction ppuDataPut1:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction ppuDataPrepare1:
Removing instruction __b1_from_ppuDataPrepare1:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b1_from___b2:
Removing instruction ppuDataFill_from_clrscr:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1_from_uctoa:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b7:
Removing instruction __b1_from___b4:
Removing instruction __b6:
Removing instruction __b4_from___b6:
Removing instruction gotoxy_from_cputsxy:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction gotoxy_from_cputcxy:
Removing instruction __b1:
Removing instruction cputc_from___b1:
Removing instruction __breturn:
Removing instruction __b1_from_uctoa_append:
Removing instruction __b3:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __b1_from_gotoxy:
Removing instruction __b2_from___b1:
Removing instruction __breturn:
Removing instruction __b1_from_cputs:
Removing instruction __breturn:
Removing instruction cputc_from___b2:
Removing instruction __b1_from___b2:
Removing instruction __b2:
Removing instruction ppuDataSet_from___b2:
Removing instruction __b4:
Removing instruction __b3:
Removing instruction ppuDataPrepare1:
Removing instruction ppuDataPut1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_cscroll:
Removing instruction __b3:
Removing instruction ppuDataFill_from___b3:
Removing instruction __b6:
Removing instruction ppuDataFetch_from___b2:
Removing instruction __b4:
Removing instruction ppuDataTransfer_from___b4:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction ppuDataPrepare1:
Removing instruction __b2:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __breturn
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b5_from___b5 to __b4
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp initNES1___b1
Removing instruction jmp __b1
Removing instruction jmp __b2
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination

FINAL SYMBOL TABLE
__constant struct RICOH_2A03 *APU = (struct RICOH_2A03 *) 16384
__constant char DIGITS[] = "0123456789abcdef"z
__constant char * const FR_COUNTER = (char *) 16407
__constant const char JOY_DOWN = 4
__constant const char JOY_LEFT = 2
__constant const char JOY_RIGHT = 1
__constant const char JOY_UP = 8
__constant char * const MEMORY = (char *) 0
__constant char OFFSET_STRUCT_RICOH_2A03_DMC_FREQ = $10
__constant char OFFSET_STRUCT_RICOH_2A03_JOY1 = $16
__constant char OFFSET_STRUCT_RICOH_2C02_PPUADDR = 6
__constant char OFFSET_STRUCT_RICOH_2C02_PPUDATA = 7
__constant char OFFSET_STRUCT_RICOH_2C02_PPUMASK = 1
__constant char OFFSET_STRUCT_RICOH_2C02_PPUSCROLL = 5
__constant char OFFSET_STRUCT_RICOH_2C02_PPUSTATUS = 2
__constant char PALETTE[$20] = { 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $f, $30, 8, 1, $f, $18, 8, 1, $30, $37, $1a, $f, $f, $f, $f }
__constant struct RICOH_2C02 *PPU = (struct RICOH_2C02 *) 8192
__constant char * const PPU_ATTRIBUTE_TABLE_0 = (char *) 9152
__constant char * const PPU_ATTRIBUTE_TABLE_1 = (char *) 10176
__constant char * const PPU_NAME_TABLE_0 = (char *) 8192
__constant char * const PPU_PALETTE = (char *) 16128
__constant volatile char * const PPU_PPUDATA = (char *) 8199
__constant volatile char * const PPU_PPUSTATUS = (char *) 8194
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char RADIX_HEXADECIMAL_VALUES_CHAR[] = { $10 }
__constant char SIZEOF_CHAR = 1
__constant char TILES[] = kickasm {{ .var filechargen = LoadBinary("characters.901225-01.bin")
     .for(var c=0; c<256; c++) {
        // Plane 0
        .fill 8, filechargen.get(c*8+i)
        // Plane 1
        .fill 8, 0
    }
 }}
__constant void (*VECTORS[])() = { &vblank, &main, 0 }
void __start()
void clrscr()
__constant char conio_cscroll_buffer[$20] = { fill( $20, 0) }
__loadstore char conio_cursor_x // zp[1]:15 4375315.90625
__loadstore char conio_cursor_y // zp[1]:16 6.530632875510204E7
__loadstore char *conio_line_text // zp[2]:17 4.9111335755555555E7
void cputc(char c)
char cputc::c
char cputc::c#0 // reg byte x 2002.0
char cputc::c#1 // reg byte x 2000002.0
char cputc::c#2 // reg byte x 7000334.666666666
void cputcxy(char x , char y , char c)
char cputcxy::c
char cputcxy::c#4 // reg byte y 250.25
char cputcxy::x
char cputcxy::x#0 // reg byte x 202.0
char cputcxy::x#1 // reg byte x 202.0
char cputcxy::x#4 // reg byte x 1203.0
char cputcxy::y
char cputcxy::y#2 // reg byte a 202.0
char cputcxy::y#3 // reg byte a 202.0
char cputcxy::y#4 // reg byte a 601.5
void cputln()
void cputs(const char *s)
char cputs::c
char cputs::c#1 // reg byte a 1000001.0
const char *cputs::s
const char *cputs::s#0 // s zp[2]:23 500000.5
const char *cputs::s#2 // s zp[2]:23 1500001.5
void cputsxy(char x , char y , const char *s)
const char *cputsxy::s
char cputsxy::x
char cputsxy::x#0 // reg byte x 551.0
char cputsxy::y
char cputsxy::y#0 // reg byte a 551.0
void cscroll()
char *cscroll::line1
char *cscroll::line1#1 // line1 zp[2]:9 6.666666666673334E11
char *cscroll::line1#2 // line1 zp[2]:9 3.333333333336667E11
char *cscroll::line2
char *cscroll::line2#1 // line2 zp[2]:25 1.000000000001E12
char *cscroll::line2#2 // line2 zp[2]:25 2.857142857145714E11
char cscroll::y
char cscroll::y#1 // reg byte x 2.000000000002E12
char cscroll::y#2 // reg byte x 3.75000000000375E11
void gotoxy(char x , char y)
char *gotoxy::$5 // zp[2]:23 20002.0
unsigned int gotoxy::$6 // zp[2]:23 20002.0
unsigned int gotoxy::line_offset
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:23 20002.0
char gotoxy::x
char gotoxy::x#1 // reg byte x 1001.0
char gotoxy::x#2 // reg byte x 1001.0
char gotoxy::x#4 // reg byte x 3667.333333333333
char gotoxy::x#5 // reg byte x 20002.0
char gotoxy::y
char gotoxy::y#1 // reg byte a 2002.0
char gotoxy::y#2 // reg byte a 2002.0
char gotoxy::y#4 // reg byte a 7334.666666666666
char gotoxy::y#5 // reg byte a 3333.6666666666665
void main()
char main::i
char main::i#1 // i zp[1]:4 202.0
char main::i#2 // i zp[1]:4 86.57142857142857
char main::initNES1_i
char main::initNES1_i#1 // reg byte x 151.5
char main::initNES1_i#2 // reg byte x 112.22222222222223
char main::initNES1_waitForVBlank1_$0 // reg byte a 202.0
char main::initNES1_waitForVBlank2_$0 // reg byte a 202.0
char main::screensizex1_return
__constant char main::screensizex1_return#0 = $20 // screensizex1_return
char main::screensizex2_return
__constant char main::screensizex2_return#0 = $20 // screensizex2_return
char main::screensizey1_return
__constant char main::screensizey1_return#0 = $1e // screensizey1_return
char main::screensizey2_return
__constant char main::screensizey2_return#0 = $1e // screensizey2_return
char main::screensizey3_return
__constant char main::screensizey3_return#0 = $1e // screensizey3_return
char main::x
char main::x#1 // x zp[1]:2 202.0
char main::x#10 // x zp[1]:2 72.14285714285714
char main::y
char main::y#1 // y zp[1]:3 202.0
char main::y#10 // y zp[1]:3 72.14285714285714
__constant char num_buffer[$b] = { fill( $b, 0) }
void ppuDataFetch(void * const cpuData , void * const ppuData , unsigned int size)
void * const ppuDataFetch::cpuData
__constant void * const ppuDataFetch::cpuData#0 = (void * const )conio_cscroll_buffer // cpuData
char *ppuDataFetch::cpuDst
char *ppuDataFetch::cpuDst#1 // cpuDst zp[2]:13 1.0E17
char *ppuDataFetch::cpuDst#2 // cpuDst zp[2]:13 7.5E16
unsigned int ppuDataFetch::i
unsigned int ppuDataFetch::i#1 // i zp[2]:11 2.0E17
unsigned int ppuDataFetch::i#2 // i zp[2]:11 6.0E16
void * const ppuDataFetch::ppuData
void * const ppuDataFetch::ppuData#0 // ppuData zp[2]:27 5.25000000000075E12
char ppuDataFetch::ppuDataPrepare1_$0 // reg byte a 2.0000000000002E13
char ppuDataFetch::ppuDataPrepare1_$1 // reg byte a 2.0000000000002E13
void * const ppuDataFetch::ppuDataPrepare1_ppuData
char ppuDataFetch::ppuDataRead1_return
char ppuDataFetch::ppuDataRead1_return#0 // reg byte a 2.0E17
unsigned int ppuDataFetch::size
__constant unsigned int ppuDataFetch::size#0 = $20 // size
void ppuDataFill(void * const ppuData , char val , unsigned int size)
unsigned int ppuDataFill::i
unsigned int ppuDataFill::i#1 // i zp[2]:27 2.000000000002E12
unsigned int ppuDataFill::i#2 // i zp[2]:27 1.000000000001E12
void * const ppuDataFill::ppuData
char ppuDataFill::ppuDataPrepare1_$0 // reg byte a 2.0000000002E10
char ppuDataFill::ppuDataPrepare1_$1 // reg byte a 2.0000000002E10
void * const ppuDataFill::ppuDataPrepare1_ppuData
void * const ppuDataFill::ppuDataPrepare1_ppuData#0 // ppuDataPrepare1_ppuData zp[2]:11 6.666666667333333E9
char ppuDataFill::ppuDataPut1_val
unsigned int ppuDataFill::size
unsigned int ppuDataFill::size#5 // size zp[2]:13 1.1111111111122223E11
char ppuDataFill::val
char ppuDataFill::val#10 // reg byte x 1.1111111111122223E11
void ppuDataSet(void * const ppuData , char val)
void * const ppuDataSet::ppuData
char * const ppuDataSet::ppuData#0 // ppuData zp[2]:25 2000000.2
char ppuDataSet::ppuDataPrepare1_$0 // reg byte x 2.00000002E8
char ppuDataSet::ppuDataPrepare1_$1 // reg byte x 2.00000002E8
void * const ppuDataSet::ppuDataPrepare1_ppuData
char ppuDataSet::ppuDataPut1_val
char ppuDataSet::val
char ppuDataSet::val#0 // reg byte a 1.8333333666666668E7
void ppuDataTransfer(void * const ppuData , void * const cpuData , unsigned int size)
void * const ppuDataTransfer::cpuData
void * const ppuDataTransfer::cpuData#2 // cpuData zp[2]:13
char *ppuDataTransfer::cpuSrc
char *ppuDataTransfer::cpuSrc#1 // cpuSrc zp[2]:13 1.000000000000001E15
char *ppuDataTransfer::cpuSrc#2 // cpuSrc zp[2]:13 7.52500000000001E14
char *ppuDataTransfer::cpuSrc#6 // cpuSrc zp[2]:13 2.0000000000002E13
unsigned int ppuDataTransfer::i
unsigned int ppuDataTransfer::i#1 // i zp[2]:7 2.000000000000002E15
unsigned int ppuDataTransfer::i#2 // i zp[2]:7 6.000000000000005E14
void * const ppuDataTransfer::ppuData
void * const ppuDataTransfer::ppuData#0 // ppuData zp[2]:11 2.000000000002E12
char ppuDataTransfer::ppuDataPrepare1_$0 // reg byte a 2.0000000000002E13
char ppuDataTransfer::ppuDataPrepare1_$1 // reg byte a 2.0000000000002E13
void * const ppuDataTransfer::ppuDataPrepare1_ppuData
void * const ppuDataTransfer::ppuDataPrepare1_ppuData#0 // ppuDataPrepare1_ppuData zp[2]:11 7.000000000001E12
char ppuDataTransfer::ppuDataPut1_val
char ppuDataTransfer::ppuDataPut1_val#0 // reg byte a 2.000000000000002E15
unsigned int ppuDataTransfer::size
unsigned int ppuDataTransfer::size#3 // size zp[2]:27 8.333333333333342E13
char readJoy1()
char readJoy1::$1 // zp[1]:21 101.0
char readJoy1::$2 // reg byte a 202.0
char readJoy1::i
char readJoy1::i#1 // reg byte x 202.0
char readJoy1::i#2 // reg byte x 60.599999999999994
char readJoy1::joy
char readJoy1::joy#1 // reg byte a 101.0
char readJoy1::joy#2 // reg byte a 51.0
char readJoy1::return
char readJoy1::return#2 // reg byte a 4.0
void uctoa(char value , char *buffer , char radix)
char *uctoa::buffer
char *uctoa::buffer#11 // buffer zp[2]:7 33500.49999999999
char *uctoa::buffer#14 // buffer zp[2]:7 150001.5
char *uctoa::buffer#3 // buffer zp[2]:7 2002.0
char *uctoa::buffer#4 // buffer zp[2]:7 200002.0
char uctoa::digit
char uctoa::digit#1 // digit zp[1]:5 200002.0
char uctoa::digit#2 // digit zp[1]:5 30769.53846153846
char uctoa::digit_value
char uctoa::digit_value#0 // digit_value zp[1]:22 60000.600000000006
char *uctoa::digit_values
char uctoa::max_digits
__constant char uctoa::max_digits#2 = 2 // max_digits
char uctoa::radix
char uctoa::started
char uctoa::started#2 // started zp[1]:6 60000.600000000006
char uctoa::started#4 // started zp[1]:6 100001.0
char uctoa::value
char uctoa::value#0 // reg byte x 100001.0
char uctoa::value#1 // reg byte x 551.0
char uctoa::value#2 // reg byte x 67000.99999999999
char uctoa::value#6 // reg byte x 150001.5
char uctoa_append(char *buffer , char value , char sub)
char *uctoa_append::buffer
char *uctoa_append::buffer#0 // buffer zp[2]:7 137500.25
char uctoa_append::digit
char uctoa_append::digit#1 // reg byte y 1.000000001E9
char uctoa_append::digit#2 // reg byte y 1.0005000015E9
char uctoa_append::return
char uctoa_append::return#0 // reg byte x 200002.0
char uctoa_append::sub
char uctoa_append::sub#0 // sub zp[1]:22 3.333500005E8
char uctoa_append::value
char uctoa_append::value#0 // reg byte x 366667.3333333334
char uctoa_append::value#1 // reg byte x 2.000000002E9
char uctoa_append::value#2 // reg byte x 5.0018333416666675E8
__interrupt(hardware_all) void vblank()
char vblank::$1 // reg byte a 4.0
char vblank::$3 // reg byte a 4.0
char vblank::$5 // reg byte a 4.0
char vblank::$7 // reg byte a 4.0
char vblank::joy
char vblank::joy#0 // reg byte x 0.7142857142857142
__loadstore volatile char x_scroll // zp[1]:19 1.15
__loadstore volatile char y_scroll // zp[1]:20 1.4761904761904763

reg byte x [ main::initNES1_i#2 main::initNES1_i#1 ]
zp[1]:2 [ main::x#10 main::x#1 ]
zp[1]:3 [ main::y#10 main::y#1 ]
zp[1]:4 [ main::i#2 main::i#1 ]
reg byte x [ readJoy1::i#2 readJoy1::i#1 ]
reg byte a [ readJoy1::joy#2 readJoy1::joy#1 ]
reg byte x [ ppuDataFill::val#10 ]
zp[1]:5 [ uctoa::digit#2 uctoa::digit#1 ]
reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
zp[1]:6 [ uctoa::started#2 uctoa::started#4 ]
zp[2]:7 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 ppuDataTransfer::i#2 ppuDataTransfer::i#1 ]
reg byte x [ cputcxy::x#4 cputcxy::x#0 cputcxy::x#1 ]
reg byte a [ cputcxy::y#4 cputcxy::y#3 cputcxy::y#2 ]
reg byte y [ cputcxy::c#4 ]
reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ]
reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#1 gotoxy::y#2 ]
reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#1 gotoxy::x#2 ]
reg byte x [ cputc::c#2 cputc::c#0 cputc::c#1 ]
reg byte x [ cscroll::y#2 cscroll::y#1 ]
zp[2]:9 [ cscroll::line1#2 cscroll::line1#1 ]
zp[2]:11 [ ppuDataFetch::i#2 ppuDataFetch::i#1 ppuDataFill::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuDataPrepare1_ppuData#0 ppuDataTransfer::ppuData#0 ]
zp[2]:13 [ ppuDataFetch::cpuDst#2 ppuDataFetch::cpuDst#1 ppuDataFill::size#5 ppuDataTransfer::cpuData#2 ppuDataTransfer::cpuSrc#2 ppuDataTransfer::cpuSrc#6 ppuDataTransfer::cpuSrc#1 ]
zp[1]:15 [ conio_cursor_x ]
zp[1]:16 [ conio_cursor_y ]
zp[2]:17 [ conio_line_text ]
zp[1]:19 [ x_scroll ]
zp[1]:20 [ y_scroll ]
reg byte a [ readJoy1::return#2 ]
reg byte x [ vblank::joy#0 ]
reg byte a [ vblank::$1 ]
reg byte a [ vblank::$3 ]
reg byte a [ vblank::$5 ]
reg byte a [ vblank::$7 ]
reg byte a [ main::initNES1_waitForVBlank1_$0 ]
reg byte a [ main::initNES1_waitForVBlank2_$0 ]
reg byte x [ cputsxy::x#0 ]
reg byte a [ cputsxy::y#0 ]
zp[1]:21 [ readJoy1::$1 ]
reg byte a [ readJoy1::$2 ]
reg byte a [ ppuDataTransfer::ppuDataPrepare1_$0 ]
reg byte a [ ppuDataTransfer::ppuDataPrepare1_$1 ]
reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ]
reg byte a [ ppuDataFill::ppuDataPrepare1_$0 ]
reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ]
zp[1]:22 [ uctoa::digit_value#0 uctoa_append::sub#0 ]
reg byte x [ uctoa_append::return#0 ]
zp[2]:23 [ gotoxy::$6 gotoxy::line_offset#0 gotoxy::$5 cputs::s#2 cputs::s#0 ]
reg byte a [ cputs::c#1 ]
zp[2]:25 [ ppuDataSet::ppuData#0 cscroll::line2#2 cscroll::line2#1 ]
reg byte a [ ppuDataSet::val#0 ]
reg byte x [ ppuDataSet::ppuDataPrepare1_$0 ]
reg byte x [ ppuDataSet::ppuDataPrepare1_$1 ]
zp[2]:27 [ ppuDataFetch::ppuData#0 ppuDataFill::i#2 ppuDataFill::i#1 ppuDataTransfer::size#3 ]
reg byte a [ ppuDataFetch::ppuDataPrepare1_$0 ]
reg byte a [ ppuDataFetch::ppuDataPrepare1_$1 ]
reg byte a [ ppuDataFetch::ppuDataRead1_return#0 ]


FINAL ASSEMBLER
Score: 893089

  // File Comments
// NES conio printing
/// @file
/// Nintendo Entertainment System (NES
///
/// https://en.wikipedia.org/wiki/Nintendo_Entertainment_System_(Model_NES-101)
/// https://github.com/gregkrsak/first_nes
/// @file
/// Ricoh 2C02 - NES Picture Processing Unit (PPU)
///
/// Ricoh RP2C02 (NTSC version) / RP2C07 (PAL version),
/// https://en.wikipedia.org/wiki/Picture_Processing_Unit
/// https://wiki.nesdev.com/w/index.php/PPU_registers
/// http://nesdev.com/2C02%20technical%20reference.TXT
/// Based on: https://github.com/gregkrsak/first_nes written by Greg M. Krsak, 2018.
  // Upstart
.cpu _6502
  // Nintendo Entertainment System (NES) ROM (Mapper 0 NROM, Vertical Mirroring)
// https://sadistech.com/nesromtool/romdoc.html
// https://forums.nesdev.com/viewtopic.php?f=2&t=9896
// https://github.com/gregkrsak/first_nes
.file [name="nes-conio.nes", type="bin", segments="NesRom"]
.file [name="nes-conio.nes_hdr", type="bin", segments="Header"]
.file [name="nes-conio.nes_prg", type="bin", segments="ProgramRom"]
.file [name="nes-conio.nes_chr", type="bin", segments="CharacterRom"]
.segmentdef Header  [ start=$0000,       min=$0000, max=$000f, fill ]
.segmentdef Tiles   [ start=$0000,       min=$0000, max=$1fff, fill ]
.segmentdef Code    [ start=$c000,       min=$c000, max=$fff9 ]
.segmentdef Data    [ startAfter="Code", min=$c000, max=$fff9 ]
.segmentdef Vectors [ start=$fffa,       min=$fffa, max=$ffff ]
.segmentdef GameRam [start=$200,max=$7ff, virtual]
.segmentdef ProgramRom [ segments="Code, Data, Vectors" ]
.segmentdef CharacterRom [ segments="Tiles" ]
.segmentdef NesRom
.segment NesRom
.segmentout [ segments="Header" ]
.segmentout [ segments="ProgramRom" ]
.segmentout [ segments="CharacterRom" ]
.segment Header
.text   @"NES\$1a"
.byte   $01           // 1x 16KB ROM (PRG)
.byte   $01           // 1x 8KB VROM (CHR)
.byte   %00000001     // Mapper nibble 0000 == No mapping (a simple 16KB PRG + 8KB CHR game)
                      // Mirroring nibble 0001 == Vertical mirroring only
  // Global Constants & labels
  /// Standard Controller Right Button
  .const JOY_RIGHT = 1
  /// Standard Controller Left Button
  .const JOY_LEFT = 2
  /// Standard Controller Down Button
  .const JOY_DOWN = 4
  /// Standard Controller Up Button
  .const JOY_UP = 8
  .const OFFSET_STRUCT_RICOH_2A03_DMC_FREQ = $10
  .const OFFSET_STRUCT_RICOH_2C02_PPUMASK = 1
  .const OFFSET_STRUCT_RICOH_2C02_PPUSTATUS = 2
  .const OFFSET_STRUCT_RICOH_2A03_JOY1 = $16
  .const OFFSET_STRUCT_RICOH_2C02_PPUADDR = 6
  .const OFFSET_STRUCT_RICOH_2C02_PPUDATA = 7
  .const OFFSET_STRUCT_RICOH_2C02_PPUSCROLL = 5
  .const SIZEOF_CHAR = 1
  /// $2000-$23bf	$03c0	Name table 0
  .label PPU_NAME_TABLE_0 = $2000
  /// $23c0-$23ff	$0040	Attribute table 0
  .label PPU_ATTRIBUTE_TABLE_0 = $23c0
  /// $27c0-$27ff	$0040	Attribute table 1
  .label PPU_ATTRIBUTE_TABLE_1 = $27c0
  /// $3000-$3eff	$0f00	Mirrors of $2000-$2eff
  /// $3f00-$3f1f	$0020	Palette RAM indexes
  .label PPU_PALETTE = $3f00
  /// PPU Status Register for reading in ASM
  .label PPU_PPUSTATUS = $2002
  /// PPU Data Register for reading in ASM
  .label PPU_PPUDATA = $2007
  /// APU Frame Counter
  /// generates low-frequency clocks for the channels and an optional 60 Hz interrupt.
  /// https://wiki.nesdev.com/w/index.php/APU_Frame_Counter
  /// ------+-----+---------------------------------------------------------------
  ///  $4017 |	 W  | FR_COUNTER Frame Counter	Set mode and interrupt
  ///  ------+-----+---------------------------------------------------------------
  ///        |   7	| Sequencer mode: 0 selects 4-step sequence, 1 selects 5-step sequence
  ///        |   6	| Interrupt inhibit flag. If set, the frame interrupt flag is cleared, otherwise it is unaffected.
  ///  ------+-----+---------------------------------------------------------------
  /// Side effects	After 3 or 4 CPU clock cycles*, the timer is reset.
  /// If the mode flag is set, then both "quarter frame" and "half frame" signals are also generated.
  .label FR_COUNTER = $4017
  /// Pointer to the start of RAM memory
  .label MEMORY = 0
  /// NES Picture Processing Unit (PPU)
  .label PPU = $2000
  /// NES CPU and audion processing unit (APU)
  .label APU = $4000
  // The current cursor x-position
  .label conio_cursor_x = $f
  // The current cursor y-position
  .label conio_cursor_y = $10
  // The current text cursor line start
  .label conio_line_text = $11
  .label x_scroll = $13
  .label y_scroll = $14
.segment Code
  // __start
__start: {
    // __start::__init1
    // __ma char conio_cursor_x = 0
    // [1] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // __ma char conio_cursor_y = 0
    // [2] conio_cursor_y = 0 -- vbuz1=vbuc1 
    sta.z conio_cursor_y
    // __ma char *conio_line_text = CONIO_SCREEN_TEXT
    // [3] conio_line_text = PPU_NAME_TABLE_0 -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z conio_line_text
    lda #>PPU_NAME_TABLE_0
    sta.z conio_line_text+1
    // volatile char x_scroll
    // [4] x_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z x_scroll
    // volatile char y_scroll
    // [5] y_scroll = 0 -- vbuz1=vbuc1 
    sta.z y_scroll
    // [6] phi from __start::__init1 to __start::@1 [phi:__start::__init1->__start::@1]
    // __start::@1
    // [7] call main
    // [32] phi from __start::@1 to main [phi:__start::@1->main]
    jsr main
    // __start::@return
    // [8] return 
    rts
}
  // vblank
// NMI Called when the PPU refreshes the screen (also known as the V-Blank period)
vblank: {
    // interrupt(isr_hardware_all_entry) -- isr_hardware_all_entry 
    pha
    txa
    pha
    tya
    pha
    // char joy = readJoy1()
    // [10] call readJoy1
    // Read controller 1
    jsr readJoy1
    // [11] readJoy1::return#2 = readJoy1::joy#2
    // vblank::@11
    // [12] vblank::joy#0 = readJoy1::return#2 -- vbuxx=vbuaa 
    tax
    // joy&JOY_DOWN
    // [13] vblank::$1 = vblank::joy#0 & JOY_DOWN -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_DOWN
    // if(joy&JOY_DOWN)
    // [14] if(0==vblank::$1) goto vblank::@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b1
    // vblank::@5
    // if(++y_scroll==240)
    // [15] y_scroll = ++ y_scroll -- vbuz1=_inc_vbuz1 
    inc.z y_scroll
    // [16] if(y_scroll!=$f0) goto vblank::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$f0
    cmp.z y_scroll
    bne __b1
    // vblank::@6
    // y_scroll=0
    // [17] y_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z y_scroll
    // vblank::@1
  __b1:
    // joy&JOY_UP
    // [18] vblank::$3 = vblank::joy#0 & JOY_UP -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_UP
    // if(joy&JOY_UP)
    // [19] if(0==vblank::$3) goto vblank::@2 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b2
    // vblank::@7
    // if(--y_scroll==255)
    // [20] y_scroll = -- y_scroll -- vbuz1=_dec_vbuz1 
    dec.z y_scroll
    // [21] if(y_scroll!=$ff) goto vblank::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$ff
    cmp.z y_scroll
    bne __b2
    // vblank::@8
    // y_scroll=239
    // [22] y_scroll = $ef -- vbuz1=vbuc1 
    lda #$ef
    sta.z y_scroll
    // vblank::@2
  __b2:
    // joy&JOY_LEFT
    // [23] vblank::$5 = vblank::joy#0 & JOY_LEFT -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_LEFT
    // if(joy&JOY_LEFT)
    // [24] if(0==vblank::$5) goto vblank::@3 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b3
    // vblank::@9
    // x_scroll++;
    // [25] x_scroll = ++ x_scroll -- vbuz1=_inc_vbuz1 
    inc.z x_scroll
    // vblank::@3
  __b3:
    // joy&JOY_RIGHT
    // [26] vblank::$7 = vblank::joy#0 & JOY_RIGHT -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #JOY_RIGHT
    // if(joy&JOY_RIGHT)
    // [27] if(0==vblank::$7) goto vblank::@4 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq __b4
    // vblank::@10
    // x_scroll--;
    // [28] x_scroll = -- x_scroll -- vbuz1=_dec_vbuz1 
    dec.z x_scroll
    // vblank::@4
  __b4:
    // PPU->PPUSCROLL = x_scroll
    // [29] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = x_scroll -- _deref_pbuc1=vbuz1 
    lda.z x_scroll
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
    // PPU->PPUSCROLL = y_scroll
    // [30] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) = y_scroll -- _deref_pbuc1=vbuz1 
    lda.z y_scroll
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUSCROLL
    // vblank::@return
    // }
    // [31] return 
    // interrupt(isr_hardware_all_exit) -- isr_hardware_all_exit 
    pla
    tay
    pla
    tax
    pla
    rti
}
  // main
// RESET Called when the NES is reset, including when it is turned on.
main: {
    .const screensizex1_return = $20
    .const screensizey1_return = $1e
    .const screensizey2_return = $1e
    .const screensizex2_return = $20
    .const screensizey3_return = $1e
    .label x = 2
    .label y = 3
    .label i = 4
    // main::initNES1
    // asm
    // asm { cld ldx#$ff txs  }
    cld
    ldx #$ff
    txs
    // main::initNES1_disableVideoOutput1
    // PPU->PPUCTRL = 0
    // [34] *((char *)PPU) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta PPU
    // PPU->PPUMASK = 0
    // [35] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = 0 -- _deref_pbuc1=vbuc2 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK
    // main::initNES1_disableAudioOutput1
    // *FR_COUNTER = 0b01000000
    // [36] *FR_COUNTER = $40 -- _deref_pbuc1=vbuc2 
    lda #$40
    sta FR_COUNTER
    // APU->DMC_FREQ  = 0b01000000
    // [37] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ) = $40 -- _deref_pbuc1=vbuc2 
    sta APU+OFFSET_STRUCT_RICOH_2A03_DMC_FREQ
    // main::initNES1_clearVBlankFlag1
    // asm
    // asm { ldaPPU_PPUSTATUS  }
    lda PPU_PPUSTATUS
    // [39] phi from main::initNES1_clearVBlankFlag1 to main::initNES1_waitForVBlank1 [phi:main::initNES1_clearVBlankFlag1->main::initNES1_waitForVBlank1]
    // main::initNES1_waitForVBlank1
  initNES1_waitForVBlank1:
    // main::initNES1_waitForVBlank1_@1
    // PPU->PPUSTATUS&0x80
    // [40] main::initNES1_waitForVBlank1_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #$80
    and PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
    // while(!(PPU->PPUSTATUS&0x80))
    // [41] if(0==main::initNES1_waitForVBlank1_$0) goto main::initNES1_waitForVBlank1_@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq initNES1_waitForVBlank1
    // [42] phi from main::initNES1_waitForVBlank1_@1 to main::initNES1_@1 [phi:main::initNES1_waitForVBlank1_@1->main::initNES1_@1]
    // [42] phi main::initNES1_i#2 = 0 [phi:main::initNES1_waitForVBlank1_@1->main::initNES1_@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [42] phi from main::initNES1_@1 to main::initNES1_@1 [phi:main::initNES1_@1->main::initNES1_@1]
    // [42] phi main::initNES1_i#2 = main::initNES1_i#1 [phi:main::initNES1_@1->main::initNES1_@1#0] -- register_copy 
    // main::initNES1_@1
  initNES1___b1:
    // (MEMORY+0x000)[i] = 0
    // [43] MEMORY[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta MEMORY,x
    // (MEMORY+0x100)[i] = 0
    // [44] (MEMORY+$100)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$100,x
    // (MEMORY+0x200)[i] = 0
    // [45] (MEMORY+$200)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$200,x
    // (MEMORY+0x300)[i] = 0
    // [46] (MEMORY+$300)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$300,x
    // (MEMORY+0x400)[i] = 0
    // [47] (MEMORY+$400)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$400,x
    // (MEMORY+0x500)[i] = 0
    // [48] (MEMORY+$500)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$500,x
    // (MEMORY+0x600)[i] = 0
    // [49] (MEMORY+$600)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$600,x
    // (MEMORY+0x700)[i] = 0
    // [50] (MEMORY+$700)[main::initNES1_i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    sta MEMORY+$700,x
    // while (++i)
    // [51] main::initNES1_i#1 = ++ main::initNES1_i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [52] if(0!=main::initNES1_i#1) goto main::initNES1_@1 -- 0_neq_vbuxx_then_la1 
    cpx #0
    bne initNES1___b1
    // [53] phi from main::initNES1_@1 to main::initNES1_waitForVBlank2 [phi:main::initNES1_@1->main::initNES1_waitForVBlank2]
    // main::initNES1_waitForVBlank2
  initNES1_waitForVBlank2:
    // main::initNES1_waitForVBlank2_@1
    // PPU->PPUSTATUS&0x80
    // [54] main::initNES1_waitForVBlank2_$0 = *((volatile char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS) & $80 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #$80
    and PPU+OFFSET_STRUCT_RICOH_2C02_PPUSTATUS
    // while(!(PPU->PPUSTATUS&0x80))
    // [55] if(0==main::initNES1_waitForVBlank2_$0) goto main::initNES1_waitForVBlank2_@1 -- 0_eq_vbuaa_then_la1 
    cmp #0
    beq initNES1_waitForVBlank2
    // main::initNES1_@7
    // asm
    // asm { ldaPPU_PPUSTATUS  }
    lda PPU_PPUSTATUS
    // [57] phi from main::initNES1_@7 to main::@6 [phi:main::initNES1_@7->main::@6]
    // main::@6
    // ppuDataTransfer(PPU_PALETTE, PALETTE, sizeof(PALETTE))
    // [58] call ppuDataTransfer
  // Transfer the palette
    // [103] phi from main::@6 to ppuDataTransfer [phi:main::@6->ppuDataTransfer]
    // [103] phi ppuDataTransfer::size#3 = $20*SIZEOF_CHAR [phi:main::@6->ppuDataTransfer#0] -- vwuz1=vbuc1 
    lda #<$20*SIZEOF_CHAR
    sta.z ppuDataTransfer.size
    lda #>$20*SIZEOF_CHAR
    sta.z ppuDataTransfer.size+1
    // [103] phi ppuDataTransfer::cpuData#2 = (void * const )PALETTE [phi:main::@6->ppuDataTransfer#1] -- pvoz1=pvoc1 
    lda #<PALETTE
    sta.z ppuDataTransfer.cpuData
    lda #>PALETTE
    sta.z ppuDataTransfer.cpuData+1
    // [103] phi ppuDataTransfer::ppuDataPrepare1_ppuData#0 = (void * const )PPU_PALETTE [phi:main::@6->ppuDataTransfer#2] -- pvoz1=pvoc1 
    lda #<PPU_PALETTE
    sta.z ppuDataTransfer.ppuDataPrepare1_ppuData
    lda #>PPU_PALETTE
    sta.z ppuDataTransfer.ppuDataPrepare1_ppuData+1
    jsr ppuDataTransfer
    // [59] phi from main::@6 to main::@12 [phi:main::@6->main::@12]
    // main::@12
    // ppuDataFill(PPU_ATTRIBUTE_TABLE_0, 0, 0x40)
    // [60] call ppuDataFill
  // Fill the PPU attribute table
    // [116] phi from main::@12 to ppuDataFill [phi:main::@12->ppuDataFill]
    // [116] phi ppuDataFill::val#10 = 0 [phi:main::@12->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #0
    // [116] phi ppuDataFill::size#5 = $40 [phi:main::@12->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$40
    sta.z ppuDataFill.size
    lda #>$40
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_ATTRIBUTE_TABLE_0 [phi:main::@12->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_ATTRIBUTE_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_ATTRIBUTE_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // [61] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
    // main::@13
    // ppuDataFill(PPU_ATTRIBUTE_TABLE_1, 0, 0x40)
    // [62] call ppuDataFill
    // [116] phi from main::@13 to ppuDataFill [phi:main::@13->ppuDataFill]
    // [116] phi ppuDataFill::val#10 = 0 [phi:main::@13->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #0
    // [116] phi ppuDataFill::size#5 = $40 [phi:main::@13->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$40
    sta.z ppuDataFill.size
    lda #>$40
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_ATTRIBUTE_TABLE_1 [phi:main::@13->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_ATTRIBUTE_TABLE_1
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_ATTRIBUTE_TABLE_1
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // [63] phi from main::@13 to main::@14 [phi:main::@13->main::@14]
    // main::@14
    // clrscr()
    // [64] call clrscr
  // Print a string
    // [126] phi from main::@14 to clrscr [phi:main::@14->clrscr]
    jsr clrscr
    // [65] phi from main::@14 to main::screensizex1 [phi:main::@14->main::screensizex1]
    // [65] phi main::x#10 = 1 [phi:main::@14->main::screensizex1#0] -- vbuz1=vbuc1 
    lda #1
    sta.z x
    // main::screensizex1
    // main::@7
  __b7:
    // for(char x=1;x<screensizex()-1;x++)
    // [66] if(main::x#10<main::screensizex1_return#0-1) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #screensizex1_return-1
    bcc __b1
    // [67] phi from main::@7 to main::screensizey2 [phi:main::@7->main::screensizey2]
    // [67] phi main::y#10 = 1 [phi:main::@7->main::screensizey2#0] -- vbuz1=vbuc1 
    lda #1
    sta.z y
    // main::screensizey2
    // main::@9
  __b9:
    // for(char y=1;y<screensizey()-3;y++)
    // [68] if(main::y#10<main::screensizey2_return#0-3) goto main::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z y
    cmp #screensizey2_return-3
    bcc __b2
    // [69] phi from main::@9 to main::screensizey3 [phi:main::@9->main::screensizey3]
    // [69] phi main::i#2 = 0 [phi:main::@9->main::screensizey3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // main::screensizey3
    // main::@11
  __b11:
    // for(char i=0;i<screensizey();i++)
    // [70] if(main::i#2<main::screensizey3_return#0) goto main::@3 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #screensizey3_return
    bcc __b3
    // main::@4
    // x_scroll = 0
    // [71] x_scroll = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z x_scroll
    // y_scroll = -8
    // [72] y_scroll = -8 -- vbuz1=vbuc1 
    lda #-8
    sta.z y_scroll
    // main::enableVideoOutput1
    // PPU->PPUCTRL = 0b10000000
    // [73] *((char *)PPU) = $80 -- _deref_pbuc1=vbuc2 
    lda #$80
    sta PPU
    // PPU->PPUMASK = 0b00011110
    // [74] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK) = $1e -- _deref_pbuc1=vbuc2 
    lda #$1e
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUMASK
    // [75] phi from main::@5 main::enableVideoOutput1 to main::@5 [phi:main::@5/main::enableVideoOutput1->main::@5]
  __b4:
  // Infinite loop
    // main::@5
    jmp __b4
    // main::@3
  __b3:
    // uctoa(i&0xf, num_buffer, HEXADECIMAL)
    // [76] uctoa::value#1 = main::i#2 & $f -- vbuxx=vbuz1_band_vbuc1 
    lda #$f
    and.z i
    tax
    // [77] call uctoa
    // [132] phi from main::@3 to uctoa [phi:main::@3->uctoa]
    jsr uctoa
    // main::@17
    // cputsxy(i, i, num_buffer)
    // [78] cputsxy::x#0 = main::i#2 -- vbuxx=vbuz1 
    ldx.z i
    // [79] cputsxy::y#0 = main::i#2 -- vbuaa=vbuz1 
    txa
    // [80] call cputsxy
    jsr cputsxy
    // main::@18
    // for(char i=0;i<screensizey();i++)
    // [81] main::i#1 = ++ main::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [69] phi from main::@18 to main::screensizey3 [phi:main::@18->main::screensizey3]
    // [69] phi main::i#2 = main::i#1 [phi:main::@18->main::screensizey3#0] -- register_copy 
    jmp __b11
    // main::@2
  __b2:
    // cputcxy(1, y, 'i')
    // [82] cputcxy::y#2 = main::y#10 -- vbuaa=vbuz1 
    lda.z y
    // [83] call cputcxy
    // [157] phi from main::@2 to cputcxy [phi:main::@2->cputcxy]
    // [157] phi cputcxy::c#4 = 'i' [phi:main::@2->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'i'
    // [157] phi cputcxy::y#4 = cputcxy::y#2 [phi:main::@2->cputcxy#1] -- register_copy 
    // [157] phi cputcxy::x#4 = 1 [phi:main::@2->cputcxy#2] -- vbuxx=vbuc1 
    ldx #1
    jsr cputcxy
    // [84] phi from main::@2 to main::screensizex2 [phi:main::@2->main::screensizex2]
    // main::screensizex2
    // main::@10
    // cputcxy(screensizex()-2, y, 'i')
    // [85] cputcxy::y#3 = main::y#10 -- vbuaa=vbuz1 
    lda.z y
    // [86] call cputcxy
    // [157] phi from main::@10 to cputcxy [phi:main::@10->cputcxy]
    // [157] phi cputcxy::c#4 = 'i' [phi:main::@10->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'i'
    // [157] phi cputcxy::y#4 = cputcxy::y#3 [phi:main::@10->cputcxy#1] -- register_copy 
    // [157] phi cputcxy::x#4 = main::screensizex2_return#0-2 [phi:main::@10->cputcxy#2] -- vbuxx=vbuc1 
    ldx #screensizex2_return-2
    jsr cputcxy
    // main::@16
    // for(char y=1;y<screensizey()-3;y++)
    // [87] main::y#1 = ++ main::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [67] phi from main::@16 to main::screensizey2 [phi:main::@16->main::screensizey2]
    // [67] phi main::y#10 = main::y#1 [phi:main::@16->main::screensizey2#0] -- register_copy 
    jmp __b9
    // main::@1
  __b1:
    // cputcxy(x, 1, '-')
    // [88] cputcxy::x#0 = main::x#10 -- vbuxx=vbuz1 
    ldx.z x
    // [89] call cputcxy
    // [157] phi from main::@1 to cputcxy [phi:main::@1->cputcxy]
    // [157] phi cputcxy::c#4 = '-' [phi:main::@1->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'-'
    // [157] phi cputcxy::y#4 = 1 [phi:main::@1->cputcxy#1] -- vbuaa=vbuc1 
    lda #1
    // [157] phi cputcxy::x#4 = cputcxy::x#0 [phi:main::@1->cputcxy#2] -- register_copy 
    jsr cputcxy
    // [90] phi from main::@1 to main::screensizey1 [phi:main::@1->main::screensizey1]
    // main::screensizey1
    // main::@8
    // cputcxy(x, screensizey()-4, '-')
    // [91] cputcxy::x#1 = main::x#10 -- vbuxx=vbuz1 
    ldx.z x
    // [92] call cputcxy
    // [157] phi from main::@8 to cputcxy [phi:main::@8->cputcxy]
    // [157] phi cputcxy::c#4 = '-' [phi:main::@8->cputcxy#0] -- vbuyy=vbuc1 
    ldy #'-'
    // [157] phi cputcxy::y#4 = main::screensizey1_return#0-4 [phi:main::@8->cputcxy#1] -- vbuaa=vbuc1 
    lda #screensizey1_return-4
    // [157] phi cputcxy::x#4 = cputcxy::x#1 [phi:main::@8->cputcxy#2] -- register_copy 
    jsr cputcxy
    // main::@15
    // for(char x=1;x<screensizex()-1;x++)
    // [93] main::x#1 = ++ main::x#10 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [65] phi from main::@15 to main::screensizex1 [phi:main::@15->main::screensizex1]
    // [65] phi main::x#10 = main::x#1 [phi:main::@15->main::screensizex1#0] -- register_copy 
    jmp __b7
}
  // readJoy1
// Read Standard Controller #1
// Returns a byte representing the pushed buttons
// - bit 0: right
// - bit 1: left
// - bit 2: down
// - bit 3: up
// - bit 4: start
// - bit 5: select
// - bit 6: B
// - bit 7: A
readJoy1: {
    .label __1 = $15
    // APU->JOY1 = 1
    // [94] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 1 -- _deref_pbuc1=vbuc2 
    // Latch the controller buttons
    lda #1
    sta APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // APU->JOY1 = 0
    // [95] *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) = 0 -- _deref_pbuc1=vbuc2 
    lda #0
    sta APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // [96] phi from readJoy1 to readJoy1::@1 [phi:readJoy1->readJoy1::@1]
    // [96] phi readJoy1::joy#2 = 0 [phi:readJoy1->readJoy1::@1#0] -- vbuaa=vbuc1 
    // [96] phi readJoy1::i#2 = 0 [phi:readJoy1->readJoy1::@1#1] -- vbuxx=vbuc1 
    tax
    // readJoy1::@1
  __b1:
    // for(char i=0;i<8;i++)
    // [97] if(readJoy1::i#2<8) goto readJoy1::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc __b2
    // readJoy1::@return
    // }
    // [98] return 
    rts
    // readJoy1::@2
  __b2:
    // joy<<1
    // [99] readJoy1::$1 = readJoy1::joy#2 << 1 -- vbuz1=vbuaa_rol_1 
    asl
    sta.z __1
    // APU->JOY1&1
    // [100] readJoy1::$2 = *((char *)APU+OFFSET_STRUCT_RICOH_2A03_JOY1) & 1 -- vbuaa=_deref_pbuc1_band_vbuc2 
    lda #1
    and APU+OFFSET_STRUCT_RICOH_2A03_JOY1
    // joy = joy<<1 | APU->JOY1&1
    // [101] readJoy1::joy#1 = readJoy1::$1 | readJoy1::$2 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __1
    // for(char i=0;i<8;i++)
    // [102] readJoy1::i#1 = ++ readJoy1::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [96] phi from readJoy1::@2 to readJoy1::@1 [phi:readJoy1::@2->readJoy1::@1]
    // [96] phi readJoy1::joy#2 = readJoy1::joy#1 [phi:readJoy1::@2->readJoy1::@1#0] -- register_copy 
    // [96] phi readJoy1::i#2 = readJoy1::i#1 [phi:readJoy1::@2->readJoy1::@1#1] -- register_copy 
    jmp __b1
}
  // ppuDataTransfer
// Transfer a number of bytes from the CPU memory to the PPU memory
// - ppuData : Pointer in the PPU memory
// - cpuData : Pointer to the CPU memory (RAM of ROM)
// - size : The number of bytes to transfer
// void ppuDataTransfer(__zp($b) void * const ppuData, __zp($d) void * const cpuData, __zp($1b) unsigned int size)
ppuDataTransfer: {
    .label ppuDataPrepare1_ppuData = $b
    .label cpuSrc = $d
    .label i = 7
    .label ppuData = $b
    .label cpuData = $d
    .label size = $1b
    // ppuDataTransfer::ppuDataPrepare1
    // BYTE1(ppuData)
    // [104] ppuDataTransfer::ppuDataPrepare1_$0 = byte1  ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuDataPrepare1_ppuData+1
    // PPU->PPUADDR = BYTE1(ppuData)
    // [105] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // BYTE0(ppuData)
    // [106] ppuDataTransfer::ppuDataPrepare1_$1 = byte0  ppuDataTransfer::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuDataPrepare1_ppuData
    // PPU->PPUADDR = BYTE0(ppuData)
    // [107] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataTransfer::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // ppuDataTransfer::@3
    // [108] ppuDataTransfer::cpuSrc#6 = (char *)ppuDataTransfer::cpuData#2
    // [109] phi from ppuDataTransfer::@3 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1]
    // [109] phi ppuDataTransfer::cpuSrc#2 = ppuDataTransfer::cpuSrc#6 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#0] -- register_copy 
    // [109] phi ppuDataTransfer::i#2 = 0 [phi:ppuDataTransfer::@3->ppuDataTransfer::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    sta.z i+1
    // ppuDataTransfer::@1
  __b1:
    // for(unsigned int i=0;i<size;i++)
    // [110] if(ppuDataTransfer::i#2<ppuDataTransfer::size#3) goto ppuDataTransfer::@2 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z size+1
    bcc __b2
    bne !+
    lda.z i
    cmp.z size
    bcc __b2
  !:
    // ppuDataTransfer::@return
    // }
    // [111] return 
    rts
    // ppuDataTransfer::@2
  __b2:
    // ppuDataPut(*cpuSrc++)
    // [112] ppuDataTransfer::ppuDataPut1_val#0 = *ppuDataTransfer::cpuSrc#2 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (cpuSrc),y
    // ppuDataTransfer::ppuDataPut1
    // PPU->PPUDATA = val
    // [113] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataTransfer::ppuDataPut1_val#0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    // ppuDataTransfer::@4
    // ppuDataPut(*cpuSrc++);
    // [114] ppuDataTransfer::cpuSrc#1 = ++ ppuDataTransfer::cpuSrc#2 -- pbuz1=_inc_pbuz1 
    inc.z cpuSrc
    bne !+
    inc.z cpuSrc+1
  !:
    // for(unsigned int i=0;i<size;i++)
    // [115] ppuDataTransfer::i#1 = ++ ppuDataTransfer::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [109] phi from ppuDataTransfer::@4 to ppuDataTransfer::@1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1]
    // [109] phi ppuDataTransfer::cpuSrc#2 = ppuDataTransfer::cpuSrc#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#0] -- register_copy 
    // [109] phi ppuDataTransfer::i#2 = ppuDataTransfer::i#1 [phi:ppuDataTransfer::@4->ppuDataTransfer::@1#1] -- register_copy 
    jmp __b1
}
  // ppuDataFill
// Fill a number of bytes in the PPU memory
// - ppuData : Pointer in the PPU memory
// - size : The number of bytes to transfer
// void ppuDataFill(void * const ppuData, __register(X) char val, __zp($d) unsigned int size)
ppuDataFill: {
    .label ppuDataPrepare1_ppuData = $b
    .label i = $1b
    .label size = $d
    // ppuDataFill::ppuDataPrepare1
    // BYTE1(ppuData)
    // [117] ppuDataFill::ppuDataPrepare1_$0 = byte1  ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuDataPrepare1_ppuData+1
    // PPU->PPUADDR = BYTE1(ppuData)
    // [118] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // BYTE0(ppuData)
    // [119] ppuDataFill::ppuDataPrepare1_$1 = byte0  ppuDataFill::ppuDataPrepare1_ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuDataPrepare1_ppuData
    // PPU->PPUADDR = BYTE0(ppuData)
    // [120] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFill::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // [121] phi from ppuDataFill::ppuDataPrepare1 to ppuDataFill::@1 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1]
    // [121] phi ppuDataFill::i#2 = 0 [phi:ppuDataFill::ppuDataPrepare1->ppuDataFill::@1#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    sta.z i+1
  // Transfer to PPU
    // ppuDataFill::@1
  __b1:
    // for(unsigned int i=0;i<size;i++)
    // [122] if(ppuDataFill::i#2<ppuDataFill::size#5) goto ppuDataFill::ppuDataPut1 -- vwuz1_lt_vwuz2_then_la1 
    lda.z i+1
    cmp.z size+1
    bcc ppuDataPut1
    bne !+
    lda.z i
    cmp.z size
    bcc ppuDataPut1
  !:
    // ppuDataFill::@return
    // }
    // [123] return 
    rts
    // ppuDataFill::ppuDataPut1
  ppuDataPut1:
    // PPU->PPUDATA = val
    // [124] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataFill::val#10 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    // ppuDataFill::@2
    // for(unsigned int i=0;i<size;i++)
    // [125] ppuDataFill::i#1 = ++ ppuDataFill::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [121] phi from ppuDataFill::@2 to ppuDataFill::@1 [phi:ppuDataFill::@2->ppuDataFill::@1]
    // [121] phi ppuDataFill::i#2 = ppuDataFill::i#1 [phi:ppuDataFill::@2->ppuDataFill::@1#0] -- register_copy 
    jmp __b1
}
  // clrscr
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
clrscr: {
    // ppuDataFill(CONIO_SCREEN_TEXT, ' ', 0x3c0)
    // [127] call ppuDataFill
    // [116] phi from clrscr to ppuDataFill [phi:clrscr->ppuDataFill]
    // [116] phi ppuDataFill::val#10 = ' ' [phi:clrscr->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #' '
    // [116] phi ppuDataFill::size#5 = $3c0 [phi:clrscr->ppuDataFill#1] -- vwuz1=vwuc1 
    lda #<$3c0
    sta.z ppuDataFill.size
    lda #>$3c0
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_NAME_TABLE_0 [phi:clrscr->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_NAME_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_NAME_TABLE_0
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // clrscr::@1
    // conio_cursor_x = 0
    // [128] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // conio_cursor_y = 0
    // [129] conio_cursor_y = 0 -- vbuz1=vbuc1 
    sta.z conio_cursor_y
    // conio_line_text = CONIO_SCREEN_TEXT
    // [130] conio_line_text = PPU_NAME_TABLE_0 -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z conio_line_text
    lda #>PPU_NAME_TABLE_0
    sta.z conio_line_text+1
    // clrscr::@return
    // }
    // [131] return 
    rts
}
  // uctoa
// Converts unsigned number value to a string representing it in RADIX format.
// If the leading digits are zero they are not included in the string.
// - value : The number to be converted to RADIX
// - buffer : receives the string representing the number and zero-termination.
// - radix : The radix to convert the number to (from the enum RADIX)
// void uctoa(__register(X) char value, __zp(7) char *buffer, char radix)
uctoa: {
    .const max_digits = 2
    .label digit_value = $16
    .label buffer = 7
    .label digit = 5
    .label started = 6
    // [133] phi from uctoa to uctoa::@1 [phi:uctoa->uctoa::@1]
    // [133] phi uctoa::buffer#11 = num_buffer [phi:uctoa->uctoa::@1#0] -- pbuz1=pbuc1 
    lda #<num_buffer
    sta.z buffer
    lda #>num_buffer
    sta.z buffer+1
    // [133] phi uctoa::started#2 = 0 [phi:uctoa->uctoa::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z started
    // [133] phi uctoa::value#2 = uctoa::value#1 [phi:uctoa->uctoa::@1#2] -- register_copy 
    // [133] phi uctoa::digit#2 = 0 [phi:uctoa->uctoa::@1#3] -- vbuz1=vbuc1 
    sta.z digit
    // uctoa::@1
  __b1:
    // for( char digit=0; digit<max_digits-1; digit++ )
    // [134] if(uctoa::digit#2<uctoa::max_digits#2-1) goto uctoa::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda.z digit
    cmp #max_digits-1
    bcc __b2
    // uctoa::@3
    // *buffer++ = DIGITS[(char)value]
    // [135] *uctoa::buffer#11 = DIGITS[uctoa::value#2] -- _deref_pbuz1=pbuc1_derefidx_vbuxx 
    lda DIGITS,x
    ldy #0
    sta (buffer),y
    // *buffer++ = DIGITS[(char)value];
    // [136] uctoa::buffer#3 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // *buffer = 0
    // [137] *uctoa::buffer#3 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    tay
    sta (buffer),y
    // uctoa::@return
    // }
    // [138] return 
    rts
    // uctoa::@2
  __b2:
    // unsigned char digit_value = digit_values[digit]
    // [139] uctoa::digit_value#0 = RADIX_HEXADECIMAL_VALUES_CHAR[uctoa::digit#2] -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z digit
    lda RADIX_HEXADECIMAL_VALUES_CHAR,y
    sta.z digit_value
    // if (started || value >= digit_value)
    // [140] if(0!=uctoa::started#2) goto uctoa::@5 -- 0_neq_vbuz1_then_la1 
    lda.z started
    bne __b5
    // uctoa::@7
    // [141] if(uctoa::value#2>=uctoa::digit_value#0) goto uctoa::@5 -- vbuxx_ge_vbuz1_then_la1 
    cpx.z digit_value
    bcs __b5
    // [142] phi from uctoa::@7 to uctoa::@4 [phi:uctoa::@7->uctoa::@4]
    // [142] phi uctoa::buffer#14 = uctoa::buffer#11 [phi:uctoa::@7->uctoa::@4#0] -- register_copy 
    // [142] phi uctoa::started#4 = uctoa::started#2 [phi:uctoa::@7->uctoa::@4#1] -- register_copy 
    // [142] phi uctoa::value#6 = uctoa::value#2 [phi:uctoa::@7->uctoa::@4#2] -- register_copy 
    // uctoa::@4
  __b4:
    // for( char digit=0; digit<max_digits-1; digit++ )
    // [143] uctoa::digit#1 = ++ uctoa::digit#2 -- vbuz1=_inc_vbuz1 
    inc.z digit
    // [133] phi from uctoa::@4 to uctoa::@1 [phi:uctoa::@4->uctoa::@1]
    // [133] phi uctoa::buffer#11 = uctoa::buffer#14 [phi:uctoa::@4->uctoa::@1#0] -- register_copy 
    // [133] phi uctoa::started#2 = uctoa::started#4 [phi:uctoa::@4->uctoa::@1#1] -- register_copy 
    // [133] phi uctoa::value#2 = uctoa::value#6 [phi:uctoa::@4->uctoa::@1#2] -- register_copy 
    // [133] phi uctoa::digit#2 = uctoa::digit#1 [phi:uctoa::@4->uctoa::@1#3] -- register_copy 
    jmp __b1
    // uctoa::@5
  __b5:
    // uctoa_append(buffer++, value, digit_value)
    // [144] uctoa_append::buffer#0 = uctoa::buffer#11
    // [145] uctoa_append::value#0 = uctoa::value#2
    // [146] uctoa_append::sub#0 = uctoa::digit_value#0
    // [147] call uctoa_append
    // [164] phi from uctoa::@5 to uctoa_append [phi:uctoa::@5->uctoa_append]
    jsr uctoa_append
    // uctoa_append(buffer++, value, digit_value)
    // [148] uctoa_append::return#0 = uctoa_append::value#2
    // uctoa::@6
    // value = uctoa_append(buffer++, value, digit_value)
    // [149] uctoa::value#0 = uctoa_append::return#0
    // value = uctoa_append(buffer++, value, digit_value);
    // [150] uctoa::buffer#4 = ++ uctoa::buffer#11 -- pbuz1=_inc_pbuz1 
    inc.z buffer
    bne !+
    inc.z buffer+1
  !:
    // [142] phi from uctoa::@6 to uctoa::@4 [phi:uctoa::@6->uctoa::@4]
    // [142] phi uctoa::buffer#14 = uctoa::buffer#4 [phi:uctoa::@6->uctoa::@4#0] -- register_copy 
    // [142] phi uctoa::started#4 = 1 [phi:uctoa::@6->uctoa::@4#1] -- vbuz1=vbuc1 
    lda #1
    sta.z started
    // [142] phi uctoa::value#6 = uctoa::value#0 [phi:uctoa::@6->uctoa::@4#2] -- register_copy 
    jmp __b4
}
  // cputsxy
// Move cursor and output a NUL-terminated string
// Same as "gotoxy (x, y); puts (s);"
// void cputsxy(__register(X) char x, __register(A) char y, const char *s)
cputsxy: {
    // gotoxy(x, y)
    // [151] gotoxy::x#2 = cputsxy::x#0
    // [152] gotoxy::y#2 = cputsxy::y#0
    // [153] call gotoxy
    // [171] phi from cputsxy to gotoxy [phi:cputsxy->gotoxy]
    // [171] phi gotoxy::x#4 = gotoxy::x#2 [phi:cputsxy->gotoxy#0] -- register_copy 
    // [171] phi gotoxy::y#4 = gotoxy::y#2 [phi:cputsxy->gotoxy#1] -- register_copy 
    jsr gotoxy
    // [154] phi from cputsxy to cputsxy::@1 [phi:cputsxy->cputsxy::@1]
    // cputsxy::@1
    // cputs(s)
    // [155] call cputs
    // [185] phi from cputsxy::@1 to cputs [phi:cputsxy::@1->cputs]
    jsr cputs
    // cputsxy::@return
    // }
    // [156] return 
    rts
}
  // cputcxy
// Move cursor and output one character
// Same as "gotoxy (x, y); cputc (c);"
// void cputcxy(__register(X) char x, __register(A) char y, __register(Y) char c)
cputcxy: {
    // gotoxy(x, y)
    // [158] gotoxy::x#1 = cputcxy::x#4
    // [159] gotoxy::y#1 = cputcxy::y#4
    // [160] call gotoxy
    // [171] phi from cputcxy to gotoxy [phi:cputcxy->gotoxy]
    // [171] phi gotoxy::x#4 = gotoxy::x#1 [phi:cputcxy->gotoxy#0] -- register_copy 
    // [171] phi gotoxy::y#4 = gotoxy::y#1 [phi:cputcxy->gotoxy#1] -- register_copy 
    jsr gotoxy
    // cputcxy::@1
    // cputc(c)
    // [161] cputc::c#0 = cputcxy::c#4 -- vbuxx=vbuyy 
    tya
    tax
    // [162] call cputc
    // [193] phi from cputcxy::@1 to cputc [phi:cputcxy::@1->cputc]
    // [193] phi cputc::c#2 = cputc::c#0 [phi:cputcxy::@1->cputc#0] -- register_copy 
    jsr cputc
    // cputcxy::@return
    // }
    // [163] return 
    rts
}
  // uctoa_append
// Used to convert a single digit of an unsigned number value to a string representation
// Counts a single digit up from '0' as long as the value is larger than sub.
// Each time the digit is increased sub is subtracted from value.
// - buffer : pointer to the char that receives the digit
// - value : The value where the digit will be derived from
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
//        (For decimal the subs used are 10000, 1000, 100, 10, 1)
// returns : the value reduced by sub * digit so that it is less than sub.
// __register(X) char uctoa_append(__zp(7) char *buffer, __register(X) char value, __zp($16) char sub)
uctoa_append: {
    .label buffer = 7
    .label sub = $16
    // [165] phi from uctoa_append to uctoa_append::@1 [phi:uctoa_append->uctoa_append::@1]
    // [165] phi uctoa_append::digit#2 = 0 [phi:uctoa_append->uctoa_append::@1#0] -- vbuyy=vbuc1 
    ldy #0
    // [165] phi uctoa_append::value#2 = uctoa_append::value#0 [phi:uctoa_append->uctoa_append::@1#1] -- register_copy 
    // uctoa_append::@1
  __b1:
    // while (value >= sub)
    // [166] if(uctoa_append::value#2>=uctoa_append::sub#0) goto uctoa_append::@2 -- vbuxx_ge_vbuz1_then_la1 
    cpx.z sub
    bcs __b2
    // uctoa_append::@3
    // *buffer = DIGITS[digit]
    // [167] *uctoa_append::buffer#0 = DIGITS[uctoa_append::digit#2] -- _deref_pbuz1=pbuc1_derefidx_vbuyy 
    lda DIGITS,y
    ldy #0
    sta (buffer),y
    // uctoa_append::@return
    // }
    // [168] return 
    rts
    // uctoa_append::@2
  __b2:
    // digit++;
    // [169] uctoa_append::digit#1 = ++ uctoa_append::digit#2 -- vbuyy=_inc_vbuyy 
    iny
    // value -= sub
    // [170] uctoa_append::value#1 = uctoa_append::value#2 - uctoa_append::sub#0 -- vbuxx=vbuxx_minus_vbuz1 
    txa
    sec
    sbc.z sub
    tax
    // [165] phi from uctoa_append::@2 to uctoa_append::@1 [phi:uctoa_append::@2->uctoa_append::@1]
    // [165] phi uctoa_append::digit#2 = uctoa_append::digit#1 [phi:uctoa_append::@2->uctoa_append::@1#0] -- register_copy 
    // [165] phi uctoa_append::value#2 = uctoa_append::value#1 [phi:uctoa_append::@2->uctoa_append::@1#1] -- register_copy 
    jmp __b1
}
  // gotoxy
// Set the cursor to the specified position
// void gotoxy(__register(X) char x, __register(A) char y)
gotoxy: {
    .label __5 = $17
    .label __6 = $17
    .label line_offset = $17
    // if(y>CONIO_HEIGHT)
    // [172] if(gotoxy::y#4<$1e+1) goto gotoxy::@3 -- vbuaa_lt_vbuc1_then_la1 
    cmp #$1e+1
    bcc __b1
    // [174] phi from gotoxy to gotoxy::@1 [phi:gotoxy->gotoxy::@1]
    // [174] phi gotoxy::y#5 = 0 [phi:gotoxy->gotoxy::@1#0] -- vbuaa=vbuc1 
    lda #0
    // [173] phi from gotoxy to gotoxy::@3 [phi:gotoxy->gotoxy::@3]
    // gotoxy::@3
    // [174] phi from gotoxy::@3 to gotoxy::@1 [phi:gotoxy::@3->gotoxy::@1]
    // [174] phi gotoxy::y#5 = gotoxy::y#4 [phi:gotoxy::@3->gotoxy::@1#0] -- register_copy 
    // gotoxy::@1
  __b1:
    // if(x>=CONIO_WIDTH)
    // [175] if(gotoxy::x#4<$20) goto gotoxy::@4 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$20
    bcc __b2
    // [177] phi from gotoxy::@1 to gotoxy::@2 [phi:gotoxy::@1->gotoxy::@2]
    // [177] phi gotoxy::x#5 = 0 [phi:gotoxy::@1->gotoxy::@2#0] -- vbuxx=vbuc1 
    ldx #0
    // [176] phi from gotoxy::@1 to gotoxy::@4 [phi:gotoxy::@1->gotoxy::@4]
    // gotoxy::@4
    // [177] phi from gotoxy::@4 to gotoxy::@2 [phi:gotoxy::@4->gotoxy::@2]
    // [177] phi gotoxy::x#5 = gotoxy::x#4 [phi:gotoxy::@4->gotoxy::@2#0] -- register_copy 
    // gotoxy::@2
  __b2:
    // conio_cursor_x = x
    // [178] conio_cursor_x = gotoxy::x#5 -- vbuz1=vbuxx 
    stx.z conio_cursor_x
    // conio_cursor_y = y
    // [179] conio_cursor_y = gotoxy::y#5 -- vbuz1=vbuaa 
    sta.z conio_cursor_y
    // unsigned int line_offset = (unsigned int)y*CONIO_WIDTH
    // [180] gotoxy::$6 = (unsigned int)gotoxy::y#5 -- vwuz1=_word_vbuaa 
    sta.z __6
    lda #0
    sta.z __6+1
    // [181] gotoxy::line_offset#0 = gotoxy::$6 << 5 -- vwuz1=vwuz1_rol_5 
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    asl.z line_offset
    rol.z line_offset+1
    // CONIO_SCREEN_TEXT + line_offset
    // [182] gotoxy::$5 = PPU_NAME_TABLE_0 + gotoxy::line_offset#0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __5
    clc
    adc #<PPU_NAME_TABLE_0
    sta.z __5
    lda.z __5+1
    adc #>PPU_NAME_TABLE_0
    sta.z __5+1
    // conio_line_text = CONIO_SCREEN_TEXT + line_offset
    // [183] conio_line_text = gotoxy::$5 -- pbuz1=pbuz2 
    lda.z __5
    sta.z conio_line_text
    lda.z __5+1
    sta.z conio_line_text+1
    // gotoxy::@return
    // }
    // [184] return 
    rts
}
  // cputs
// Output a NUL-terminated string at the current cursor position
// void cputs(__zp($17) const char *s)
cputs: {
    .label s = $17
    // [186] phi from cputs to cputs::@1 [phi:cputs->cputs::@1]
    // [186] phi cputs::s#2 = num_buffer [phi:cputs->cputs::@1#0] -- pbuz1=pbuc1 
    lda #<num_buffer
    sta.z s
    lda #>num_buffer
    sta.z s+1
    // cputs::@1
  __b1:
    // while(c=*s++)
    // [187] cputs::c#1 = *cputs::s#2 -- vbuaa=_deref_pbuz1 
    ldy #0
    lda (s),y
    // [188] cputs::s#0 = ++ cputs::s#2 -- pbuz1=_inc_pbuz1 
    inc.z s
    bne !+
    inc.z s+1
  !:
    // [189] if(0!=cputs::c#1) goto cputs::@2 -- 0_neq_vbuaa_then_la1 
    cmp #0
    bne __b2
    // cputs::@return
    // }
    // [190] return 
    rts
    // cputs::@2
  __b2:
    // cputc(c)
    // [191] cputc::c#1 = cputs::c#1 -- vbuxx=vbuaa 
    tax
    // [192] call cputc
    // [193] phi from cputs::@2 to cputc [phi:cputs::@2->cputc]
    // [193] phi cputc::c#2 = cputc::c#1 [phi:cputs::@2->cputc#0] -- register_copy 
    jsr cputc
    // [186] phi from cputs::@2 to cputs::@1 [phi:cputs::@2->cputs::@1]
    // [186] phi cputs::s#2 = cputs::s#0 [phi:cputs::@2->cputs::@1#0] -- register_copy 
    jmp __b1
}
  // cputc
// Output one character at the current cursor position
// Moves the cursor forward. Scrolls the entire screen if needed
// void cputc(__register(X) char c)
cputc: {
    // if(c=='\n')
    // [194] if(cputc::c#2==' ') goto cputc::@1 -- vbuxx_eq_vbuc1_then_la1 
    cpx #'\n'
    beq __b1
    // cputc::@2
    // conio_line_text+conio_cursor_x
    // [195] ppuDataSet::ppuData#0 = conio_line_text + conio_cursor_x -- pbuz1=pbuz2_plus_vbuz3 
    lda.z conio_cursor_x
    clc
    adc.z conio_line_text
    sta.z ppuDataSet.ppuData
    lda #0
    adc.z conio_line_text+1
    sta.z ppuDataSet.ppuData+1
    // ppuDataSet(conio_line_text+conio_cursor_x, c)
    // [196] ppuDataSet::val#0 = cputc::c#2 -- vbuaa=vbuxx 
    txa
    // [197] call ppuDataSet
    // [205] phi from cputc::@2 to ppuDataSet [phi:cputc::@2->ppuDataSet]
    jsr ppuDataSet
    // cputc::@4
    // if(++conio_cursor_x==CONIO_WIDTH)
    // [198] conio_cursor_x = ++ conio_cursor_x -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_x
    // [199] if(conio_cursor_x!=$20) goto cputc::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$20
    cmp.z conio_cursor_x
    bne __breturn
    // [200] phi from cputc::@4 to cputc::@3 [phi:cputc::@4->cputc::@3]
    // cputc::@3
    // cputln()
    // [201] call cputln
    jsr cputln
    // cputc::@return
  __breturn:
    // }
    // [202] return 
    rts
    // [203] phi from cputc to cputc::@1 [phi:cputc->cputc::@1]
    // cputc::@1
  __b1:
    // cputln()
    // [204] call cputln
    jsr cputln
    rts
}
  // ppuDataSet
// Set one byte in PPU memory
// - ppuData : Pointer in the PPU memory
// - val : The value to set
// void ppuDataSet(__zp($19) char * const ppuData, __register(A) char val)
ppuDataSet: {
    .label ppuData = $19
    // ppuDataSet::ppuDataPrepare1
    // BYTE1(ppuData)
    // [206] ppuDataSet::ppuDataPrepare1_$0 = byte1  (void * const )ppuDataSet::ppuData#0 -- vbuxx=_byte1_pvoz1 
    ldx.z ppuData+1
    // PPU->PPUADDR = BYTE1(ppuData)
    // [207] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // BYTE0(ppuData)
    // [208] ppuDataSet::ppuDataPrepare1_$1 = byte0  (void * const )ppuDataSet::ppuData#0 -- vbuxx=_byte0_pvoz1 
    ldx.z ppuData
    // PPU->PPUADDR = BYTE0(ppuData)
    // [209] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataSet::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuxx 
    stx PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // ppuDataSet::ppuDataPut1
    // PPU->PPUDATA = val
    // [210] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) = ppuDataSet::val#0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    // ppuDataSet::@return
    // }
    // [211] return 
    rts
}
  // cputln
// Print a newline
cputln: {
    // conio_line_text +=  CONIO_WIDTH
    // [212] conio_line_text = conio_line_text + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z conio_line_text
    sta.z conio_line_text
    bcc !+
    inc.z conio_line_text+1
  !:
    // conio_cursor_x = 0
    // [213] conio_cursor_x = 0 -- vbuz1=vbuc1 
    lda #0
    sta.z conio_cursor_x
    // conio_cursor_y++;
    // [214] conio_cursor_y = ++ conio_cursor_y -- vbuz1=_inc_vbuz1 
    inc.z conio_cursor_y
    // cscroll()
    // [215] call cscroll
    jsr cscroll
    // cputln::@return
    // }
    // [216] return 
    rts
}
  // cscroll
// Scroll the entire screen if the cursor is beyond the last line
cscroll: {
    // Scroll lines up
    .label line1 = 9
    .label line2 = $19
    // if(conio_cursor_y==CONIO_HEIGHT)
    // [217] if(conio_cursor_y!=$1e) goto cscroll::@return -- vbuz1_neq_vbuc1_then_la1 
    lda #$1e
    cmp.z conio_cursor_y
    bne __breturn
    // [218] phi from cscroll to cscroll::@1 [phi:cscroll->cscroll::@1]
    // [218] phi cscroll::line1#2 = PPU_NAME_TABLE_0 [phi:cscroll->cscroll::@1#0] -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0
    sta.z line1
    lda #>PPU_NAME_TABLE_0
    sta.z line1+1
    // [218] phi cscroll::line2#2 = PPU_NAME_TABLE_0+$20 [phi:cscroll->cscroll::@1#1] -- pbuz1=pbuc1 
    lda #<PPU_NAME_TABLE_0+$20
    sta.z line2
    lda #>PPU_NAME_TABLE_0+$20
    sta.z line2+1
    // [218] phi cscroll::y#2 = 0 [phi:cscroll->cscroll::@1#2] -- vbuxx=vbuc1 
    ldx #0
    // cscroll::@1
  __b1:
    // for(char y=0;y<CONIO_HEIGHT-1;y++)
    // [219] if(cscroll::y#2<$1e-1) goto cscroll::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #$1e-1
    bcc __b2
    // [220] phi from cscroll::@1 to cscroll::@3 [phi:cscroll::@1->cscroll::@3]
    // cscroll::@3
    // ppuDataFill(CONIO_SCREEN_TEXT+CONIO_BYTES-CONIO_WIDTH, ' ', CONIO_WIDTH)
    // [221] call ppuDataFill
  // Fill last line with space
    // [116] phi from cscroll::@3 to ppuDataFill [phi:cscroll::@3->ppuDataFill]
    // [116] phi ppuDataFill::val#10 = ' ' [phi:cscroll::@3->ppuDataFill#0] -- vbuxx=vbuc1 
    ldx #' '
    // [116] phi ppuDataFill::size#5 = $20 [phi:cscroll::@3->ppuDataFill#1] -- vwuz1=vbuc1 
    lda #<$20
    sta.z ppuDataFill.size
    lda #>$20
    sta.z ppuDataFill.size+1
    // [116] phi ppuDataFill::ppuDataPrepare1_ppuData#0 = (void * const )PPU_NAME_TABLE_0+(unsigned int)$1e*$20-$20 [phi:cscroll::@3->ppuDataFill#2] -- pvoz1=pvoc1 
    lda #<PPU_NAME_TABLE_0+$1e*$20-$20
    sta.z ppuDataFill.ppuDataPrepare1_ppuData
    lda #>PPU_NAME_TABLE_0+$1e*$20-$20
    sta.z ppuDataFill.ppuDataPrepare1_ppuData+1
    jsr ppuDataFill
    // cscroll::@6
    // conio_line_text -= CONIO_WIDTH
    // [222] conio_line_text = conio_line_text - $20 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z conio_line_text
    sbc #$20
    sta.z conio_line_text
    lda.z conio_line_text+1
    sbc #0
    sta.z conio_line_text+1
    // conio_cursor_y--;
    // [223] conio_cursor_y = -- conio_cursor_y -- vbuz1=_dec_vbuz1 
    dec.z conio_cursor_y
    // cscroll::@return
  __breturn:
    // }
    // [224] return 
    rts
    // cscroll::@2
  __b2:
    // ppuDataFetch(conio_cscroll_buffer, line2, CONIO_WIDTH)
    // [225] ppuDataFetch::ppuData#0 = (void * const )cscroll::line2#2 -- pvoz1=pvoz2 
    lda.z line2
    sta.z ppuDataFetch.ppuData
    lda.z line2+1
    sta.z ppuDataFetch.ppuData+1
    // [226] call ppuDataFetch
    // [232] phi from cscroll::@2 to ppuDataFetch [phi:cscroll::@2->ppuDataFetch]
    jsr ppuDataFetch
    // cscroll::@4
    // ppuDataTransfer(line1, conio_cscroll_buffer, CONIO_WIDTH)
    // [227] ppuDataTransfer::ppuData#0 = (void * const )cscroll::line1#2 -- pvoz1=pvoz2 
    lda.z line1
    sta.z ppuDataTransfer.ppuData
    lda.z line1+1
    sta.z ppuDataTransfer.ppuData+1
    // [228] call ppuDataTransfer
    // [103] phi from cscroll::@4 to ppuDataTransfer [phi:cscroll::@4->ppuDataTransfer]
    // [103] phi ppuDataTransfer::size#3 = $20 [phi:cscroll::@4->ppuDataTransfer#0] -- vwuz1=vbuc1 
    lda #<$20
    sta.z ppuDataTransfer.size
    lda #>$20
    sta.z ppuDataTransfer.size+1
    // [103] phi ppuDataTransfer::cpuData#2 = (void * const )conio_cscroll_buffer [phi:cscroll::@4->ppuDataTransfer#1] -- pvoz1=pvoc1 
    lda #<conio_cscroll_buffer
    sta.z ppuDataTransfer.cpuData
    lda #>conio_cscroll_buffer
    sta.z ppuDataTransfer.cpuData+1
    // [103] phi ppuDataTransfer::ppuDataPrepare1_ppuData#0 = ppuDataTransfer::ppuData#0 [phi:cscroll::@4->ppuDataTransfer#2] -- register_copy 
    jsr ppuDataTransfer
    // cscroll::@5
    // line1 += CONIO_WIDTH
    // [229] cscroll::line1#1 = cscroll::line1#2 + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z line1
    sta.z line1
    bcc !+
    inc.z line1+1
  !:
    // line2 += CONIO_WIDTH
    // [230] cscroll::line2#1 = cscroll::line2#2 + $20 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$20
    clc
    adc.z line2
    sta.z line2
    bcc !+
    inc.z line2+1
  !:
    // for(char y=0;y<CONIO_HEIGHT-1;y++)
    // [231] cscroll::y#1 = ++ cscroll::y#2 -- vbuxx=_inc_vbuxx 
    inx
    // [218] phi from cscroll::@5 to cscroll::@1 [phi:cscroll::@5->cscroll::@1]
    // [218] phi cscroll::line1#2 = cscroll::line1#1 [phi:cscroll::@5->cscroll::@1#0] -- register_copy 
    // [218] phi cscroll::line2#2 = cscroll::line2#1 [phi:cscroll::@5->cscroll::@1#1] -- register_copy 
    // [218] phi cscroll::y#2 = cscroll::y#1 [phi:cscroll::@5->cscroll::@1#2] -- register_copy 
    jmp __b1
}
  // ppuDataFetch
// Transfer a number of bytes from the PPU memory to the CPU memory
// - cpuData : Pointer to the CPU memory (RAM of ROM)
// - ppuData : Pointer in the PPU memory
// - size : The number of bytes to transfer
// void ppuDataFetch(void * const cpuData, __zp($1b) void * const ppuData, unsigned int size)
ppuDataFetch: {
    .const size = $20
    .label cpuData = conio_cscroll_buffer
    // Fetch from PPU to CPU
    .label cpuDst = $d
    .label i = $b
    .label ppuData = $1b
    // ppuDataFetch::ppuDataPrepare1
    // BYTE1(ppuData)
    // [233] ppuDataFetch::ppuDataPrepare1_$0 = byte1  ppuDataFetch::ppuData#0 -- vbuaa=_byte1_pvoz1 
    lda.z ppuData+1
    // PPU->PPUADDR = BYTE1(ppuData)
    // [234] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$0 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // BYTE0(ppuData)
    // [235] ppuDataFetch::ppuDataPrepare1_$1 = byte0  ppuDataFetch::ppuData#0 -- vbuaa=_byte0_pvoz1 
    lda.z ppuData
    // PPU->PPUADDR = BYTE0(ppuData)
    // [236] *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR) = ppuDataFetch::ppuDataPrepare1_$1 -- _deref_pbuc1=vbuaa 
    sta PPU+OFFSET_STRUCT_RICOH_2C02_PPUADDR
    // ppuDataFetch::@2
    // asm
    // asm { ldaPPU_PPUDATA  }
    // Perform a dummy-read to discard the current value in the data read buffer and update it with the first byte from the PPU address
    lda PPU_PPUDATA
    // [238] phi from ppuDataFetch::@2 to ppuDataFetch::@1 [phi:ppuDataFetch::@2->ppuDataFetch::@1]
    // [238] phi ppuDataFetch::cpuDst#2 = (char *)ppuDataFetch::cpuData#0 [phi:ppuDataFetch::@2->ppuDataFetch::@1#0] -- pbuz1=pbuc1 
    lda #<cpuData
    sta.z cpuDst
    lda #>cpuData
    sta.z cpuDst+1
    // [238] phi ppuDataFetch::i#2 = 0 [phi:ppuDataFetch::@2->ppuDataFetch::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z i
    sta.z i+1
    // ppuDataFetch::@1
  __b1:
    // for(unsigned int i=0;i<size;i++)
    // [239] if(ppuDataFetch::i#2<ppuDataFetch::size#0) goto ppuDataFetch::ppuDataRead1 -- vwuz1_lt_vwuc1_then_la1 
    lda.z i+1
    cmp #>size
    bcc ppuDataRead1
    bne !+
    lda.z i
    cmp #<size
    bcc ppuDataRead1
  !:
    // ppuDataFetch::@return
    // }
    // [240] return 
    rts
    // ppuDataFetch::ppuDataRead1
  ppuDataRead1:
    // return PPU->PPUDATA;
    // [241] ppuDataFetch::ppuDataRead1_return#0 = *((char *)PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA) -- vbuaa=_deref_pbuc1 
    lda PPU+OFFSET_STRUCT_RICOH_2C02_PPUDATA
    // ppuDataFetch::@3
    // *cpuDst++ = ppuDataRead()
    // [242] *ppuDataFetch::cpuDst#2 = ppuDataFetch::ppuDataRead1_return#0 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (cpuDst),y
    // *cpuDst++ = ppuDataRead();
    // [243] ppuDataFetch::cpuDst#1 = ++ ppuDataFetch::cpuDst#2 -- pbuz1=_inc_pbuz1 
    inc.z cpuDst
    bne !+
    inc.z cpuDst+1
  !:
    // for(unsigned int i=0;i<size;i++)
    // [244] ppuDataFetch::i#1 = ++ ppuDataFetch::i#2 -- vwuz1=_inc_vwuz1 
    inc.z i
    bne !+
    inc.z i+1
  !:
    // [238] phi from ppuDataFetch::@3 to ppuDataFetch::@1 [phi:ppuDataFetch::@3->ppuDataFetch::@1]
    // [238] phi ppuDataFetch::cpuDst#2 = ppuDataFetch::cpuDst#1 [phi:ppuDataFetch::@3->ppuDataFetch::@1#0] -- register_copy 
    // [238] phi ppuDataFetch::i#2 = ppuDataFetch::i#1 [phi:ppuDataFetch::@3->ppuDataFetch::@1#1] -- register_copy 
    jmp __b1
}
  // File Data
.segment GameRam
  // Buffer used for scrolling the NES screen
  conio_cscroll_buffer: .fill $20, 0
.segment Data
  // The digits used for numbers
  DIGITS: .text "0123456789abcdef"
  // Values of hexadecimal digits
  RADIX_HEXADECIMAL_VALUES_CHAR: .byte $10
.segment GameRam
  num_buffer: .fill $b, 0
.segment Data
  // Color Palette
  PALETTE: .byte 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $21, $f, $30, 1, $f, $30, 8, 1, $f, $18, 8, 1, $30, $37, $1a, $f, $f, $f, $f
.segment Tiles
TILES:
.var filechargen = LoadBinary("characters.901225-01.bin")
     .for(var c=0; c<256; c++) {
        // Plane 0
        .fill 8, filechargen.get(c*8+i)
        // Plane 1
        .fill 8, 0
    }

.segment Vectors
  VECTORS: .word vblank, main, 0

