/*>library.c
 *
 * Dare Devil Denis
 * BBC version by Simon Pick. Copyright Visions Software Factory.
 * RISC OS Conversion by Michael Foot.
 * Version 1.03 - (09 Feb 2003).
 *
 */

#include <time.h>
#include "r6502lib.h"

extern void m14B9(void);
extern void m1671(void);
extern void m16C9(void);
extern void m181D(void);
extern void m190D(void);
extern void m1A04(void);
extern void m1B62(void);
extern void m1BE4(void);
extern void m1DEC(void);
extern void m1E19(void);
extern void m1E72(void);
extern void m1F4A(void);
extern void m1FB8(void);
extern void m20A2(void);
extern void m221A(void);
extern void m226A(void);
extern void m22FF(void);
extern void m2392(void);
extern void m2642(void);
extern void m26B0(void);

extern int initial_lives;

void m14B9(void)
{
  LDA_IMMED(0x01) /*lives count*/
  STA_ABSOL(0x0C15)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0C50)
  LDA_IMMED(0xCF)
  STA_ABSOL(0x174C)
  LDA_IMMED(0x4C)
  STA_ABSOL(0x174B)
  LDA_IMMED(0x01)
  STA_ABSOL(0x181C)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x181B)
  LDA_IMMED(0x80)
  STA_ABSOL(0x166F)
  LDA_IMMED(0x01)
  STA_ABSOL(0x1670)
  /*JSR_ABSOL(0x20A2,m20A2)*/
  m20A2();
m14E4:
  /*JSR_ABSOL(0x2392,m2392)*/
  m2392();
  LDA_IMMED(0x08)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*JSR_ABSOL(0x1F4A,m1F4A)*/
  m1F4A();
  /*JSR_ABSOL(0x1FB8,m1FB8)*/
  m1FB8();
  /*JSR_ABSOL(0x190D,m190D)*/
  m190D();
m1508:
  /*JSR_ABSOL(0x226A,m226A)*/
  m226A();
  /*JSR_ABSOL(0x181D,m181D)*/
  m181D();
  /*JSR_ABSOL(0x1671,m1671)*/
  m1671();
  /*JSR_ABSOL(0x1BE4,m1BE4)*/
  m1BE4();
  LDA_ABSOL(0x2FDC)
  CMP_IMMED(0x1F)
  BNE(m151E)
  /*JSR_ABSOL(0x16C9,m16C9)*/
  m16C9();
m151E:
  CLC
  LDA_ABSOL(0x0C10)
  ADC_IMMED(0x04)
  STA_ABSOL(0x2FE0)
  SEC
  LDX_ABSOL(0x0C12)
  LDA_ABSOL(0x0C11)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x2FE1)
  ADC_IMMED(0x08)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BNE(m1550)
  /*JSR_ABSOL(0x1B62,m1B62)*/
  m1B62();
  CMP_IMMED(0x00)
  BEQ(m1508)
m1550:
  /*JSR_ABSOL(0x1A04,m1A04)*/
  m1A04();
  LDA_IMMED(0xCF)
  STA_ABSOL(0x174C)
  LDA_IMMED(0x4C)
  STA_ABSOL(0x174B)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x181B)
  LDA_ABSOL(0x0C15)
  CMP_IMMED(initial_lives) /*total number of lives*/
  BEQ(m1574)
  /*JSR_ABSOL(0x20A2,m20A2)*/
  m20A2();
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C09)
  JMP_ABSOL(m14E4)
m1574:
  LDX_IMMED(0x00)
m1576:
  /*you are fired*/
  LDA_ABSXP(0x14A5)
  OSWRCH
  INX
  CPX_IMMED(0x13)
  BNE(m1576)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C30)
m1586:
  /*JSR_ABSOL(0x226A,m226A)*/
  m226A();
  /*JSR_ABSOL(0x1671,m1671)*/
  m1671();
  INC_ABSOL(0x0C30)
  LDA_ABSOL(0x0C30)
  CMP_IMMED(0x3C)
  BNE(m1586)
  /*RTS*/
  return;
}

void m1597(void)
{
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x80)
  OSWRCH
  /*JSR_ABSOL(0x190D,m190D)*/
  m190D();
  LDA_IMMED(0x11)
  OSWRCH
  LDA_ABSOL(0x2FE3)
  CMP_IMMED(0x01)
  BEQ(m160F)
  LDA_ABSOL(0x2FED)
  CMP_IMMED(0x01)
  BNE(m160F)
  LDA_ABSOL(0x0C50)
  CMP_ABSOL(0x2FE3)
  BEQ(m160F)
  LDA_ABSOL(0x2FE3)
  STA_ABSOL(0x0C50)
  LDA_ABSOL(0x0C15)
  CMP_IMMED(0x01)
  BEQ(m160F)
  DEC_ABSOL(0x0C15)
  LDA_IMMED(0x12)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0x03)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C33)
  LDA_IMMED(0x30)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_IMMED(0x00)
  STA_ZEROP(0x70)
m1602:
  LDA_IMMED(0x13)
  OSBYTE
  INC_ZEROP(0x70)
  LDA_ZEROP(0x70)
  CMP_IMMED(0x2C)
  BNE(m1602)
m160F:
  LDA_IMMED(0x01)
  STA_ABSOL(0x1670)
  LDA_IMMED(0x80)
  STA_ABSOL(0x166F)
  LDA_ABSOL(0x0C30)
  /*RTS*/
  return;
}

void m1671(void)
{
  LDA_ABSOL(0x2FE3)
  CMP_IMMED(0x04)
  BCC(m1679)
  /*RTS*/
  return;
m1679:
  LDA_ABSOL(0x166F)
  CMP_IMMED(0x80)
  BNE(m1692)
  INC_ABSOL(0x1670)
  LDA_ABSOL(0x1670)
  CMP_IMMED(0x1A)
  BNE(m16A1)
  LDA_IMMED(0x00)
  STA_ABSOL(0x166F)
  JMP_ABSOL(m16A1)
m1692:
  DEC_ABSOL(0x1670)
  LDA_ABSOL(0x1670)
  CMP_IMMED(0x01)
  BNE(m16A1)
  LDA_IMMED(0x80)
  STA_ABSOL(0x166F)
m16A1:
  LDA_IMMED(0x29)
  STA_ZEROP(0x72)
  LDA_IMMED(0x16)
  STA_ZEROP(0x73)
  LDA_IMMED(0x28)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0xBB)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x2FE1)
  ADC_ABSOL(0x1670)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*RTS*/
  return;
}

void m16C9(void)
{
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  SEC
  LDA_ABSOL(0x0C11)
  SBC_IMMED(0x20)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0xD5)
  STA_ZEROP(0x72)
  LDA_IMMED(0x17)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x08)
  STA_ZEROP(0x70)
m16EA:
  /*JSR_ABSOL(0x221A,m221A)*/
  m221A();
  DEC_ZEROP(0x70)
  BNE(m16EA)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  INC_ABSOL(0x2FE0)
  INC_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x12)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0x02)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C33)
  LDA_IMMED(0xC8)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  /*RTS*/
  return;
}

void m181D(void)
{
  LDA_ABSOL(0x2FE3)
  CMP_IMMED(0x04)
  BCS(m1825)
  /*RTS*/
  return;
m1825:
  LDA_ABSOL(0x174B)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x174C)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_ZEROP(0x70)
  PHA
  LDA_ZEROP(0x71)
  PHA
  LDA_ABSOL(0x2FE2)
  PHA
  DEC_ABSOL(0x174B)
  LDA_ABSOL(0x174B)
  CMP_IMMED(0x00)
  BNE(m1868)
  LDA_IMMED(0x4C)
  STA_ABSOL(0x174B)
  SEC
  LDA_ABSOL(0x174C)
  SBC_IMMED(0x38)
  STA_ABSOL(0x174C)
  LDA_ABSOL(0x174C)
  CMP_IMMED(0xEF)
  BNE(m1868)
  LDA_IMMED(0xCF)
  STA_ABSOL(0x174C)
  LDA_ABSOL(0x2FE3)
  STA_ABSOL(0x181C)
m1868:
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  PLA
  STA_ABSOL(0x2FE2)
  PLA
  STA_ZEROP(0x71)
  PLA
  STA_ZEROP(0x70)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_ABSOL(0x174B)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x174C)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x4D)
  STA_ZEROP(0x72)
  LDA_IMMED(0x17)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*JMP_ABSOL(m1122)*/
/*m1122:*/
  LDA_ABSOL(0x181B)
  CMP_IMMED(0xFF)
  BEQ(m112C)
  JMP_ABSOL(m11B1)
  /*RTS*/
  return;
m112C:
  LDA_ABSOL(0x174B)
  LDX_ABSOL(0x181C)
  CMP_ABSXP(0x2EB6)
  BEQ(m1138)
  /*RTS*/
  return;
m1138:
  LDA_ABSOL(0x174C)
  STA_ABSOL(0x181A)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x174B)
  ADC_IMMED(0x04)
  STA_ABSOL(0x1819)
  STA_ABSOL(0x2FE0)
  CLC
  LDA_ABSOL(0x2FE1)
  ADC_IMMED(0x02)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x2FE0)
  ADC_IMMED(0x02)
  STA_ABSOL(0x2FE0)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BNE(m119C)
  LDA_ABSOL(0x174C)
  CMP_IMMED(0x5F)
  BEQ(m119C)
  LDA_ABSOL(0x174C)
  STA_ABSOL(0x181A)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x174B)
  ADC_IMMED(0x06)
  STA_ABSOL(0x2FE0)
  CLC
  LDA_ABSOL(0x174C)
  ADC_IMMED(0x21)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BEQ(m119C)
  JMP_ABSOL(m11A2)
m119C:
  LDA_IMMED(0xFF)
  STA_ABSOL(0x181B)
  /*RTS*/
  return;
m11A2:
  LDA_ABSOL(0x174B)
  CLC
  ADC_IMMED(0x04)
  STA_ABSOL(0x1819)
  LDA_ABSOL(0x174C)
  STA_ABSOL(0x181A)
m11B1:
  LDA_ABSOL(0x1819)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x181A)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_IMMED(0x90)
  STA_ZEROP(0x72)
  LDA_IMMED(0x17)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  INC_ABSOL(0x181A)
  INC_ABSOL(0x181B)
  LDA_ABSOL(0x181B)
  CMP_IMMED(0x11)
  BNE(m11EC)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x181B)
  INC_ABSOL(0x181C)
  LDA_ABSOL(0x181C)
  CMP_IMMED(0x28)
  BNE(m11EC)
  LDA_IMMED(0x01)
  STA_ABSOL(0x181C)
m11EC:
  /*RTS*/
  return;
}

void m190D(void)
{
  LDA_IMMED(0x17)
  OSWRCH
  LDA_IMMED(0x00)
  OSWRCH
  LDA_IMMED(0x0A)
  OSWRCH
  LDA_IMMED(0x20)
  OSWRCH
  LDY_IMMED(0x08)
m1923:
  LDA_IMMED(0x00)
  OSWRCH
  DEY
  BNE(m1923)
  /*RTS*/
  return;
}

void m192C(void)
{
  clock_t timer;

  timer = 0;

/*m192C:*/
  LDA_IMMED(0x12)
  STA_ABSOL(0x2FE4)
  LDA_IMMED(0x68)
  STA_ZEROP(0x70)
  LDA_IMMED(0x2F)
  STA_ZEROP(0x71)
m1939:
  LDY_IMMED(0x02)
  LDA_POSTI(0x70)
  STA_ZEROP(0x72)
  CLC
  LDA_ZEROP(0x72)
  ADC_ZEROP(0x72)
  STA_ZEROP(0x72)
  CLC
  LDA_ZEROP(0x72)
  LDY_IMMED(0x02)
  ADC_POSTI(0x70)
  STA_ZEROP(0x72)
  LDY_IMMED(0x01)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BNE(m1969)
  LDA_IMMED(0x2D)
  STA_ABSOL(0x2FE5)
m195C:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ABSOL(0x2FE5)
  BNE(m195C)
  JMP_ABSOL(m19CF)
m1969:
  /*slow the tune down*/
  while (clock() < timer)
  {
  }

  LDA_IMMED(0x01)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0xF1)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0C33)
  LDY_IMMED(0x00)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_ZEROP(0x72)
  r6502_a = (r6502_a<<1);
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_IMMED(0x02)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0xF1)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0C33)
  LDY_IMMED(0x01)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_ZEROP(0x72)
  timer = (r6502_a << 2);
  r6502_a = (r6502_a<<1);
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD

  /*slow the tune down!*/
  timer += clock();

m19CF:
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x03)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  DEC_ABSOL(0x2FE4)
  BEQ(m19E4)
  JMP_ABSOL(m1939)
m19E4:
  LDA_IMMED(0x32)
  STA_ABSOL(0x2FE5)
m19E9:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ABSOL(0x2FE5)
  BNE(m19E9)
  /*RTS*/
  return;
}

void m1A04(void)
{
  LDA_IMMED(0x10)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C33)
  LDA_IMMED(0x06)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x05)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_IMMED(0x9A)
  STA_ABSOL(0x0C00)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C01)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x9A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  CLC
  LDA_ABSOL(0x0C10)
  ADC_IMMED(0x04)
  STA_ABSOL(0x0C10)
  LDA_IMMED(0x12)
  STA_ABSOL(0x0C12)
m1A73:
  /*JSR_ABSOL(0x226A,m226A)*/
  m226A();
  LDA_IMMED(0x13)
  OSBYTE
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  INC_ABSOL(0x0C10)
  LDA_ABSOL(0x0C10)
  CMP_IMMED(0x4A)
  BNE(m1AB8)
  LDA_IMMED(0x49)
  STA_ABSOL(0x0C10)
m1AB8:
  INC_ABSOL(0x0C12)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  LDA_ABSOL(0x0C00)
  STA_ZEROP(0x72)
  LDA_ABSOL(0x0C01)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_IMMED(0x9A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x28)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x20)
  BEQ(m1AF5)
  JMP_ABSOL(m1A73)
m1AF5:
  LDA_IMMED(0x07)
  STA_ABSOL(0x2FE4)
m1AFA:
  LDA_IMMED(0x9A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x28)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x0A)
  STA_ABSOL(0x2FE6)
m1B19:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ABSOL(0x2FE6)
  BNE(m1B19)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x28)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x0A)
  STA_ABSOL(0x2FE6)
m1B42:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ABSOL(0x2FE6)
  BNE(m1B42)
  DEC_ABSOL(0x2FE4)
  BNE(m1AFA)
  INC_ABSOL(0x0C15)
  /*RTS*/
  return;
}

void m1B62(void)
{
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C0A)
  LDA_ABSOL(0x2FDC)
  CMP_IMMED(0x00)
  BEQ(m1B74)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C0A)
  /*RTS*/
  return;
m1B74:
  LDA_ABSOL(0x0C10)
  CLC
  ADC_IMMED(0x01)
  CLC
  ADC_IMMED(0x01)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  DEC_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BEQ(m1BA5)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C0A)
  /*RTS*/
  return;
m1BA5:
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x00)
  BNE(m1BAD)
  /*RTS*/
  return;
m1BAD:
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x2FE1)
  ADC_IMMED(0x10)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BEQ(m1BE1)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C0A)
  /*RTS*/
  return;
m1BE1:
  /*RTS*/
  return;
}

void m1BE4(void)
{
  /*JSR_ABSOL(0x1DEC,m1DEC)*/
  m1DEC();
  CLC
  LDA_ABSOL(0x0C14)
  ADC_ABSOL(0x0C13)
  STA_ABSOL(0x0C14)
  LDA_ABSOL(0x0C10)
  ADC_IMMED(0x00)
  STA_ABSOL(0x0C10)
  CLC
  LDA_ABSOL(0x0C14)
  ADC_ABSOL(0x0C13)
  STA_ABSOL(0x0C14)
  LDA_ABSOL(0x0C10)
  ADC_IMMED(0x00)
  STA_ABSOL(0x0C10)
  CLC
  LDA_ABSOL(0x0C14)
  ADC_ABSOL(0x0C13)
  STA_ABSOL(0x0C14)
  LDA_ABSOL(0x0C10)
  ADC_IMMED(0x00)
  STA_ABSOL(0x0C10)
  LDA_IMMED(0x11)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C33)
  LDA_ABSOL(0x0C13)
  STA_ABSOL(0x0C34)
  LSR_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_IMMED(0x03)
  STA_ABSOL(0x0C34)
  LDA_ABSOL(0x0C01)
  CMP_IMMED(0x2B)
  BEQ(m1C92)
  LDA_IMMED(0x10)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0xF1)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0C33)
  LDA_IMMED(0x03)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x02)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  JMP_ABSOL(m1CD1)
m1C92:
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x00)
  BNE(m1CD1)
  LDA_ABSOL(0x0C13)
  CMP_IMMED(0x00)
  BEQ(m1CD1)
  LDA_IMMED(0x10)
  STA_ABSOL(0x0C30)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C31)
  LDA_IMMED(0xF9)
  STA_ABSOL(0x0C32)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0C33)
  LDA_IMMED(0x04)
  STA_ABSOL(0x0C34)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C35)
  LDA_IMMED(0x02)
  STA_ABSOL(0x0C36)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C37)
  LDX_IMMED(0x30)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
m1CD1:
  LDX_IMMED(0xFF)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPX_IMMED(0x00)
  BEQ(m1CF3)
  INC_ABSOL(0x0C13)
  INC_ABSOL(0x0C13)
  INC_ABSOL(0x0C13)
  LDA_ABSOL(0x0C13)
  CMP_IMMED(0xFA)
  BCC(m1CF3)
  LDA_IMMED(0xFA)
  STA_ABSOL(0x0C13)
m1CF3:
  LDA_ABSOL(0x0C10)
  CMP_IMMED(0x4D)
  BEQ(m1D0B)
  LDA_ABSOL(0x0C10)
  CMP_IMMED(0x4C)
  BEQ(m1D0B)
  LDA_ABSOL(0x0C10)
  CMP_IMMED(0x4B)
  BEQ(m1D0B)
  JMP_ABSOL(m1D46)
m1D0B:
  LDY_ABSOL(0x2FE3)
m1D0E:
  /*JSR_ABSOL(0x221A,m221A)*/
  m221A();
  DEY
  BNE(m1D0E)
  CLC
  LDA_ABSOL(0x0C11)
  ADC_IMMED(0x38)
  STA_ABSOL(0x0C11)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C10)
  LDA_ABSOL(0x0C11)
  CMP_IMMED(0x18)
  BNE(m1D46)
  INC_ABSOL(0x2FE3)
  LDA_ABSOL(0x2FE3)
  CMP_IMMED(0x24)
  BNE(m1D38)
  LDA_IMMED(0x21)
  STA_ABSOL(0x2FE3)
m1D38:
  /*JSR_ABSOL(0x2392,m2392)*/
  m2392();
  /*JSR_ABSOL(0x1FB8,m1FB8)*/
  m1FB8();
  /*JSR_ABSOL(0x1F4A,m1F4A)*/
  m1F4A();
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C09)
m1D46:
  LDX_IMMED(0x9D)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPX_IMMED(0x00)
  BEQ(m1D5F)
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x00)
  BNE(m1D5F)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C12)
m1D5F:
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x00)
  BEQ(m1D75)
  INC_ABSOL(0x0C12)
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x1E)
  BNE(m1D75)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C12)
m1D75:
  /*JSR_ABSOL(0x1E19,m1E19)*/
  m1E19();
  LDA_ABSOL(0x0C12)
  CMP_IMMED(0x00)
  BNE(m1DBA)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  CLC
  LDA_ABSOL(0x2FE1)
  ADC_IMMED(0x10)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  LDA_ABSOL(0x2FE1)
  SEC
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDY_ABSOL(0x2FE2)
  LDA_POSTI(0x70)
  CMP_IMMED(0x00)
  BNE(m1DBA)
  /*JSR_ABSOL(0x1E72,m1E72)*/
  m1E72();
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C13)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C12)
m1DBA:
  LDX_IMMED(0xB6)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPX_IMMED(0x00)
  BEQ(m1DD8)
  LDA_ABSOL(0x0C09)
  CMP_IMMED(0x01)
  BNE(m1DD8)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C09)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C13)
m1DD8:
  /*RTS*/
  return;
}

void m1DEC(void)
{
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_ZEROP(0x70)
  STA_ABSOL(0x0C16)
  LDA_ZEROP(0x71)
  STA_ABSOL(0x0C17)
  LDA_ABSOL(0x2FE2)
  STA_ABSOL(0x0C18)
  /*RTS*/
  return;
}

void m1E19(void)
{
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x0C12)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSXP(0x2EED)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_IMMED(0x13)
  OSBYTE
  LDA_ABSOL(0x0C16)
  STA_ZEROP(0x70)
  LDA_ABSOL(0x0C17)
  STA_ZEROP(0x71)
  LDA_ABSOL(0x0C18)
  STA_ABSOL(0x2FE2)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_ABSOL(0x0C00)
  STA_ZEROP(0x72)
  LDA_ABSOL(0x0C01)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*RTS*/
  return;
}

void m1E72(void)
{
  CLD
  RLA_ABSOL(0x00C9)
  BEQ(m1E79)
  /*RTS*/
  return;
m1E79:
  LDA_ABSOL(0x2FDB)
  CMP_IMMED(0x00)
  BEQ(m1E81)
  /*RTS*/
  return;
m1E81:
  LDA_IMMED(0x0F)
  OSBYTE
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE4)
m1E8B:
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x13)
  OSBYTE
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  INC_ABSOL(0x0C11)
  LDA_ABSOL(0x0C00)
  STA_ZEROP(0x72)
  LDA_ABSOL(0x0C01)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_IMMED(0x12)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x13)
  OSBYTE
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_IMMED(0x12)
  STA_ABSOL(0x2FE1)
  INC_ABSOL(0x2FE1)
  LDA_IMMED(0xDA)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  DEC_ABSOL(0x2FE4)
  BEQ(m1F1F)
  JMP_ABSOL(m1E8B)
m1F1F:
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0C10)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x0C11)
  STA_ABSOL(0x2FE1)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_IMMED(0x12)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  /*RTS*/
  return;
}

void m1F4A(void)
{
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FE4)
  LDA_IMMED(0x70)
  STA_ABSOL(0x2FE5)
m1F54:
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x2FE4)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x2FE5)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  CLC
  LDA_ABSOL(0x2FE4)
  ADC_IMMED(0x04)
  STA_ABSOL(0x2FE4)
  LDA_ABSOL(0x2FE4)
  CMP_IMMED(0x50)
  BNE(m1F54)
  LDX_IMMED(0x00)
  LDY_ABSOL(0x2FA6)
  LDX_IMMED(0x00)
  CPY_IMMED(0x00)
  BEQ(m1FAD)
m1F89:
  LDA_ABSXP(0x2FA7)
  STA_ABSOL(0x2FE0)
  LDA_ABSXP(0x2FA8)
  STA_ABSOL(0x2FE1)
  STX_ABSOL(0x2FE4)
  STY_ABSOL(0x2FE5)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDX_ABSOL(0x2FE4)
  LDY_ABSOL(0x2FE5)
  INX
  INX
  INX
  DEY
  BNE(m1F89)
m1FAD:
  /*RTS*/
  return;
}

void m1FB8(void)
{
  LDA_ABSOL(0x2FE3)
  CMP_IMMED(0x05)
  BCS(m1FC0)
  /*RTS*/
  return;
m1FC0:
  SEC
  LDA_ABSOL(0x2FE3)
  SBC_IMMED(0x01)
  STA_ABSOL(0x2FE4)
  LSR_ABSOL(0x2FE4)
  LSR_ABSOL(0x2FE4)
  LDA_ABSOL(0x2FA6)
  LDX_ABSOL(0x2FE4)
  LDY_IMMED(0x01)
m1FD7:
  LDA_ABSYP(0x2FE4)
  INY
  CMP_IMMED(0x28)
  BCC(m1FD7)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE5)
  LDA_ABSYP(0x2FE4)
  STA_ABSOL(0x2FE6)
  LDX_ABSOL(0x2FE4)
  LDY_IMMED(0x01)
m1FEF:
  LDX_ABSOL(0x2FE6)
  LDA_ABSXP(0x2EB6)
  STA_ABSOL(0x2FE7)
  INC_ABSOL(0x2FE6)
  LDA_ABSOL(0x2FE6)
  CMP_IMMED(0x28)
  BNE(m2007)
  LDA_IMMED(0x01)
  STA_ABSOL(0x2FE6)
m2007:
  LDY_ABSOL(0x2FA6)
  LDX_IMMED(0x00)
  LDA_ABSOL(0x2FA6)
  CMP_IMMED(0x00)
  BEQ(m202C)
m2013:
  LDA_ABSXP(0x2FA7)
  CMP_ABSOL(0x2FE7)
  BEQ(m1FEF)
  LDA_ABSOL(0x2FE7)
  CLC
  ADC_IMMED(0x04)
  CMP_ABSXP(0x2FA7)
  BEQ(m1FEF)
  INX
  INX
  INX
  DEY
  BNE(m2013)
m202C:
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_IMMED(0x02)
  STA_ABSOL(0x2FE8)
m2039:
  LDA_ABSOL(0x2FE7)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x2FE5)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  CLC
  LDA_ABSOL(0x2FE5)
  ADC_IMMED(0x10)
  STA_ABSOL(0x2FE5)
  LDA_ABSOL(0x2FE7)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x2FE5)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  CLC
  LDA_ABSOL(0x2FE7)
  ADC_IMMED(0x04)
  STA_ABSOL(0x2FE7)
  SEC
  LDA_ABSOL(0x2FE5)
  SBC_IMMED(0x10)
  STA_ABSOL(0x2FE5)
  DEC_ABSOL(0x2FE8)
  BNE(m2039)
  CLC
  LDA_ABSOL(0x2FE5)
  ADC_IMMED(0x70)
  STA_ABSOL(0x2FE5)
  LDA_ABSOL(0x2FE5)
  CMP_IMMED(0x18)
  BNE(m2092)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE5)
m2092:
  DEC_ABSOL(0x2FE4)
  BEQ(m209A)
  JMP_ABSOL(m1FEF)
m209A:
  /*RTS*/
  return;
}

void m20A2(void)
{
  LDA_IMMED(0x16)
  OSWRCH
  LDA_IMMED(0x02)
  OSWRCH
  WAIT_FOR_VERTICAL_SYNC
  bbc_video_mode = 0x02;
  bbc_video_addr = 0x3000;
  getscreenaddress();
  LDA_IMMED(0x11)
  OSWRCH
  LDA_IMMED(0x03)
  OSWRCH
  LDA_IMMED(0x1F)
  OSWRCH
  LDA_IMMED(0x06)
  OSWRCH
  LDA_IMMED(0x0F)
  OSWRCH
  LDA_IMMED(0x54)
  OSWRCH
  LDA_IMMED(0x41)
  OSWRCH
  LDA_IMMED(0x4B)
  OSWRCH
  LDA_IMMED(0x45)
  OSWRCH
  LDA_IMMED(0x20)
  OSWRCH
  LDA_IMMED(0x05)
  OSWRCH
  LDA_IMMED(0x1A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x2A)
  STA_ZEROP(0x73)
  LDX_IMMED(0x00)
m20ED:
  SEC
  LDA_ZEROP(0x72)
  SBC_ABSOL(0x0C15)
  STA_ZEROP(0x72)
  LDA_ZEROP(0x73)
  SBC_IMMED(0x00)
  STA_ZEROP(0x73)
  INX
  CPX_IMMED(0x40)
  BNE(m20ED)
  LDA_IMMED(0x2C)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0x70)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x32)
  STA_ZEROP(0x70)
m2114:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ZEROP(0x70)
  BNE(m2114)
  LDA_IMMED(0x2C)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0x67)
  STA_ABSOL(0x2FE1)
  LDA_IMMED(0x1A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x29)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FDA)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FDB)
  LDA_IMMED(0xF1)
  STA_ABSOL(0x2FDC)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x2FDD)
  LDA_IMMED(0x04)
  STA_ABSOL(0x2FDE)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FDF)
  LDA_IMMED(0x01)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FE1)
  LDX_IMMED(0xDA)
  LDY_IMMED(0x2F)
  LDA_IMMED(0x07)
  OSWORD
  LDA_IMMED(0x1E)
  STA_ZEROP(0x70)
m216A:
  LDA_IMMED(0x13)
  OSBYTE
  DEC_ZEROP(0x70)
  BNE(m216A)
  LDA_IMMED(0x16)
  OSWRCH
  LDA_IMMED(0x02)
  OSWRCH
  WAIT_FOR_VERTICAL_SYNC
  bbc_video_mode = 0x02;
  bbc_video_addr = 0x3000;
  getscreenaddress();
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C12)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C13)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C14)
  /*RTS*/
  return;
}

void m221A(void)
{
  LDX_IMMED(0x04)
m221C:
  INC_ABSOX(0x2F3A)
  LDA_ABSXP(0x2F3A)
  CMP_IMMED(0x3A)
  BNE(m2230)
  LDA_IMMED(0x30)
  STA_ABSOX(0x2F3A)
  DEX
  CMP_IMMED(0xFF)
  BNE(m221C)
m2230:
  LDA_IMMED(0x1F)
  OSWRCH
  LDA_IMMED(0x07)
  OSWRCH
  LDA_IMMED(0x01)
  OSWRCH
  LDA_IMMED(0x11)
  OSWRCH
  LDA_IMMED(0x03)
  OSWRCH
  LDA_IMMED(0x11)
  OSWRCH
  LDA_IMMED(0x84)
  OSWRCH
  LDX_IMMED(0x00)
m2255:
  LDA_ABSXP(0x2F3A)
  OSWRCH
  INX
  CPX_IMMED(0x06)
  BNE(m2255)
  /*RTS*/
  return;
}

void m226A(void)
{
  LDX_ABSOL(0x0C20)
  LDA_IMMED(0x13)
  OSWRCH
  LDA_IMMED(0x08)
  OSWRCH
  LDA_ABSXP(0x2EDE)
  OSWRCH
  LDA_IMMED(0x00)
  OSWRCH
  LDA_IMMED(0x00)
  OSWRCH
  LDA_IMMED(0x00)
  OSWRCH
  INC_ABSOL(0x0C20)
  LDA_ABSOL(0x0C20)
  CMP_IMMED(0x0E)
  BCC(m229B)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0C20)
m229B:
  LDA_ABSOL(0x2FA5)
  CMP_IMMED(0x00)
  BNE(m22A3)
  /*RTS*/
  return;
m22A3:
  LDA_IMMED(0x13)
  OSBYTE
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x2FA4)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x2FA5)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  INC_ABSOL(0x2FA4)
  LDA_ABSOL(0x2FA4)
  CMP_IMMED(0x4B)
  BNE(m22D1)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FA4)
m22D1:
  LDA_ABSOL(0x0C04)
  STA_ZEROP(0x72)
  LDA_ABSOL(0x0C05)
  STA_ZEROP(0x73)
  LDA_ABSOL(0x2FA4)
  STA_ABSOL(0x2FE0)
  LDA_ABSOL(0x2FA5)
  STA_ABSOL(0x2FE1)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDA_IMMED(0x13)
  OSBYTE
  /*JSR_ABSOL(0x22FF,m22FF)*/
  m22FF();
  /*RTS*/
  return;
}

void m22FF(void)
{
  LDX_IMMED(0x00)
  LDA_ABSOL(0x2FA6)
  STA_ABSOL(0x2FEA)
  LDA_ABSOL(0x2FA6)
  CMP_IMMED(0x00)
  BNE(m230F)
  /*RTS*/
  return;
m230F:
  LDA_ABSXP(0x2FA7)
  STA_ABSOL(0x2FE0)
  LDA_ABSXP(0x2FA8)
  STA_ABSOL(0x2FE1)
  LDY_ABSXP(0x2FA9)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSYP(0x2EED)
  STA_ABSOL(0x2FE1)
  STX_ABSOL(0x2FE4)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  LDA_IMMED(0x5A)
  STA_ZEROP(0x72)
  LDA_IMMED(0x27)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDX_ABSOL(0x2FE4)
  INC_ABSOX(0x2FA9)
  LDA_ABSXP(0x2FA9)
  CMP_IMMED(0x20)
  BNE(m234B)
  LDA_IMMED(0x01)
  STA_ABSOX(0x2FA9)
m234B:
  LDA_ABSOL(0x0C02)
  STA_ZEROP(0x72)
  LDA_ABSOL(0x0C03)
  STA_ZEROP(0x73)
  LDA_ABSXP(0x2FA7)
  STA_ABSOL(0x2FE0)
  LDA_ABSXP(0x2FA8)
  STA_ABSOL(0x2FE1)
  LDY_ABSXP(0x2FA9)
  SEC
  LDA_ABSOL(0x2FE1)
  SBC_ABSYP(0x2EED)
  STA_ABSOL(0x2FE1)
  STX_ABSOL(0x2FE4)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  LDX_ABSOL(0x2FE4)
  INX
  INX
  INX
  CPX_IMMED(0x0F)
  BNE(m2382)
  /*RTS*/
  return;
m2382:
  DEC_ABSOL(0x2FEA)
  BNE(m230F)
  /*RTS*/
  return;
}

void m2392(void)
{
  LDA_IMMED(0x16)
  OSWRCH
  LDA_IMMED(0x02)
  OSWRCH
  WAIT_FOR_VERTICAL_SYNC
  bbc_video_mode = 0x02;
  bbc_video_addr = 0x3000;
  getscreenaddress();
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C10)
  LDA_IMMED(0x38)
  STA_ABSOL(0x0C11)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C12)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C13)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0C14)
  LDA_IMMED(0x11)
  OSWRCH
  LDA_IMMED(0x84)
  OSWRCH
  LDX_IMMED(0x00)
m23C1:
  LDY_IMMED(0x00)
m23C3:
  LDA_IMMED(0x1F)
  OSWRCH
  TXA
  OSWRCH
  TYA
  OSWRCH
  LDA_IMMED(0x20)
  OSWRCH
  INY
  CPY_IMMED(0x03)
  BNE(m23C3)
  INX
  CPX_IMMED(0x14)
  BNE(m23C1)
  LDX_IMMED(0x0F)
  LDA_IMMED(0x1F)
  OSWRCH
  LDA_IMMED(0x01)
  OSWRCH
  LDA_IMMED(0x01)
  OSWRCH
  LDA_IMMED(0x57)
  OSWRCH
  LDA_IMMED(0x41)
  OSWRCH
  LDA_IMMED(0x47)
  OSWRCH
  LDA_IMMED(0x45)
  OSWRCH
  LDA_IMMED(0x53)
  OSWRCH
  LDA_IMMED(0x20)
  OSWRCH
  LDA_IMMED(0x11)
  OSWRCH
  LDA_IMMED(0x03)
  OSWRCH
  LDX_IMMED(0x00)
m241A:
  LDA_ABSXP(0x2F3A)
  OSWRCH
  INX
  CPX_IMMED(0x06)
  BNE(m241A)
  LDA_IMMED(0x11)
  OSWRCH
  LDA_ABSOL(0x2FE3)
  STA_ABSOL(0x2FE4)
m2430:
  LDA_ABSOL(0x2FE4)
  CMP_IMMED(0x01)
  BEQ(m2454)
  LDA_ABSOL(0x2FE4)
  CMP_IMMED(0x02)
  BEQ(m2454)
  LDA_ABSOL(0x2FE4)
  CMP_IMMED(0x03)
  BEQ(m2454)
  SEC
  LDA_ABSOL(0x2FE4)
  SBC_IMMED(0x03)
  STA_ABSOL(0x2FE4)
  LDA_IMMED(0x01)
  CMP_IMMED(0x01)
  BEQ(m2430)
m2454:
  LDA_ABSOL(0x2FE4)
  STA_ABSOL(0x2FED)
  LDA_ABSOL(0x2FE4)
  TAX
  LDA_ABSXP(0x2F36)
  /*JSR_ABSOL(0x1597,m1597)*/
  m1597();
  OSWRCH
  LDX_IMMED(0x09)
  LDY_IMMED(0x04)
m246B:
  LDA_IMMED(0x1F)
  OSWRCH
  LDA_IMMED(0x00)
  OSWRCH
  TXA
  OSWRCH
  LDA_IMMED(0x14)
  STA_ABSOL(0x2FE4)
m247E:
  LDA_IMMED(0xFA)
  OSWRCH
  DEC_ABSOL(0x2FE4)
  BNE(m247E)
  CLC
  TXA
  ADC_IMMED(0x07)
  TAX
  DEY
  CPY_IMMED(0x00)
  BNE(m246B)
  LDA_IMMED(0x14)
  OSWRCH
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FE4)
  LDA_ABSOL(0x2FE3)
  STA_ABSOL(0x2FE5)
m24A2:
  LDA_ABSOL(0x2FE5)
  CMP_IMMED(0x01)
  BEQ(m24C9)
  LDA_ABSOL(0x2FE5)
  CMP_IMMED(0x02)
  BEQ(m24C9)
  LDA_ABSOL(0x2FE5)
  CMP_IMMED(0x03)
  BEQ(m24C9)
  SEC
  LDA_ABSOL(0x2FE5)
  SBC_IMMED(0x03)
  STA_ABSOL(0x2FE5)
  INC_ABSOL(0x2FE4)
  LDA_IMMED(0x01)
  CMP_IMMED(0x01)
  BEQ(m24A2)
m24C9:
  LDX_ABSOL(0x2FE4)
  TXA
  CLC
  ADC_ABSOL(0x2FE4)
  TAX
  TXA
  CLC
  ADC_ABSOL(0x2FE4)
  TAX
  STX_ABSOL(0x2FE4)
  LDA_ABSXP(0x2F40)
  STA_ABSOL(0x2FE9)
  LDA_ABSOL(0x2FE3)
  STA_ABSOL(0x2FEC)
  LDA_IMMED(0x01)
  STA_ABSOL(0x2FEB)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FEA)
  LDA_IMMED(0x01)
  STA_ABSOL(0x2FEB)
m24F6:
  LDA_ABSOL(0x2FEA)
  STA_ABSOL(0x2FE1)
  LDX_ABSOL(0x2FEC)
  LDA_ABSXP(0x2EB6)
  INC_ABSOL(0x2FEC)
  LDA_ABSOL(0x2FEC)
  CMP_IMMED(0x28)
  BNE(m2511)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FEC)
m2511:
  LDA_ABSXP(0x2EB6)
  STA_ABSOL(0x2FE0)
  LDA_IMMED(0x03)
  STA_ZEROP(0x70)
  LDA_IMMED(0x2F)
  STA_ZEROP(0x71)
  LDX_ABSOL(0x2FED)
m2522:
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x0C)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  DEX
  BNE(m2522)
  LDY_IMMED(0x00)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C00)
  LDY_IMMED(0x01)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C01)
  LDY_IMMED(0x0A)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C02)
  LDY_IMMED(0x0B)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C03)
  LDY_IMMED(0x08)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C04)
  LDY_IMMED(0x09)
  LDA_POSTI(0x70)
  STA_ABSOL(0x0C05)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FEB)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FEB)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  LDY_IMMED(0x00)
  LDA_POSTI(0x70)
  STA_ZEROP(0x72)
  LDY_IMMED(0x01)
  LDA_POSTI(0x70)
  STA_ZEROP(0x73)
  /*JSR_ABSOL(0x2642,m2642)*/
  m2642();
  /*JSR_ABSOL(0x26B0,m26B0)*/
  m26B0();
  INC_ABSOL(0x2FEB)
  LDA_ABSOL(0x2FEB)
  CMP_IMMED(0x04)
  BNE(m2599)
  LDA_IMMED(0x01)
  STA_ABSOL(0x2FEB)
m2599:
  CLC
  LDA_ABSOL(0x2FEA)
  ADC_IMMED(0x38)
  STA_ABSOL(0x2FEA)
  LDA_ABSOL(0x2FEA)
  CMP_IMMED(0x18)
  BNE(m25AE)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FEA)
m25AE:
  DEC_ABSOL(0x2FE9)
  BEQ(m25B6)
  JMP_ABSOL(m24F6)
m25B6:
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE5)
  LDX_ABSOL(0x2FE4)
  INX
  INX
  LDA_ABSXP(0x2F40)
  STA_ABSOL(0x2FA6)
  LDA_ABSOL(0x2FA6)
  CMP_IMMED(0x00)
  BEQ(m261F)
  LDX_IMMED(0x00)
  LDA_ABSOL(0x2FA6)
  STA_ABSOL(0x2FE6)
m25D5:
  LDY_ABSOL(0x2FEC)
  LDA_ABSYP(0x2EB6)
  INC_ABSOL(0x2FEC)
  STA_ABSOX(0x2FA7)
  INX
  LDA_ABSOL(0x2FEC)
  CMP_IMMED(0x28)
  BNE(m25EE)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FEC)
m25EE:
  LDA_ABSOL(0x2FE5)
  STA_ABSOX(0x2FA7)
  INX
  CLC
  LDA_ABSOL(0x2FE5)
  ADC_IMMED(0x38)
  STA_ABSOL(0x2FE5)
  LDA_ABSOL(0x2FE5)
  CMP_IMMED(0x18)
  BNE(m260A)
  LDA_IMMED(0x38)
  STA_ABSOL(0x2FE5)
m260A:
  LDY_ABSOL(0x2FEC)
  LDA_ABSYP(0x2EB6)
  STA_ABSOX(0x2FA7)
  LSR_ABSXP(0x2FA7)
  LSR_ABSXP(0x2FA7)
  INX
  DEC_ABSOL(0x2FE6)
  BNE(m25D5)
m261F:
  LDX_ABSOL(0x2FE4)
  INX
  LDA_ABSXP(0x2F40)
  STA_ABSOL(0x2FA4)
  STA_ABSOL(0x2FA5)
  LDA_ABSXP(0x2F40)
  CMP_IMMED(0x00)
  BEQ(m263D)
  LDA_IMMED(0x4A)
  STA_ABSOL(0x2FA4)
  LDA_IMMED(0x70)
  STA_ABSOL(0x2FA5)
m263D:
  /*RTS*/
  return;
}

void m2642(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x70)
  LDA_IMMED(0x30)
  STA_ZEROP(0x71)
  LDX_IMMED(0x02)
m264C:
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FE0)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FE0)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FE0)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FE0)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  DEX
  BNE(m264C)
  LDA_ABSOL(0x2FE1)
  AND_IMMED(0x07)
  STA_ABSOL(0x2FE2)
  LSR_ABSOL(0x2FE1)
  LSR_ABSOL(0x2FE1)
  LSR_ABSOL(0x2FE1)
  LDX_ABSOL(0x2FE1)
  CPX_IMMED(0x00)
  BEQ(m26AF)
m269F:
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x80)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x02)
  STA_ZEROP(0x71)
  DEX
  BNE(m269F)
m26AF:
  /*RTS*/
  return;
}

void m26B0(void)
{
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FDD)
  STA_ABSOL(0x2FDE)
  CLC
  LDA_ZEROP(0x70)
  ADC_ABSOL(0x2FE2)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
m26C6:
  LDY_ABSOL(0x2FDD)
  LDA_POSTI(0x72)
  LDY_IMMED(0x00)
  STA_POSTI(0x70)
  INC_ABSOL(0x2FDD)
  LDY_ABSOL(0x2FDD)
  LDA_POSTI(0x72)
  LDY_IMMED(0x08)
  STA_POSTI(0x70)
  INC_ABSOL(0x2FDD)
  LDY_ABSOL(0x2FDD)
  LDA_POSTI(0x72)
  LDY_IMMED(0x10)
  STA_POSTI(0x70)
  INC_ABSOL(0x2FDD)
  LDY_ABSOL(0x2FDD)
  LDA_POSTI(0x72)
  LDY_IMMED(0x18)
  STA_POSTI(0x70)
  INC_ABSOL(0x2FDD)
  INC_ABSOL(0x2FE2)
  LDY_IMMED(0x20)
  LDA_POSTI(0x70)
  STA_ABSOL(0x2FDC)
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x01)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x00)
  STA_ZEROP(0x71)
  INC_ABSOL(0x2FDE)
  LDA_IMMED(0x10)
  CMP_ABSOL(0x2FDE)
  BNE(m271D)
  LDA_IMMED(0x01)
  CMP_IMMED(0x01)
  BEQ(m273C)
m271D:
  LDA_ABSOL(0x2FE2)
  CMP_IMMED(0x08)
  BNE(m26C6)
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x78)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x02)
  STA_ZEROP(0x71)
  LDA_IMMED(0x00)
  STA_ABSOL(0x2FE2)
  LDA_IMMED(0x01)
  CMP_IMMED(0x01)
  BEQ(m26C6)
m273C:
  LDY_IMMED(0x00)
  LDA_POSTI(0x70)
  STA_ABSOL(0x2FD8)
  LDY_IMMED(0x08)
  LDA_POSTI(0x70)
  STA_ABSOL(0x2FD9)
  LDY_IMMED(0x10)
  LDA_POSTI(0x70)
  STA_ABSOL(0x2FDA)
  LDY_IMMED(0x18)
  LDA_POSTI(0x70)
  STA_ABSOL(0x2FDB)
  /*RTS*/
  return;
}

