#include "6809.h"

char *Name[0x10000];
int In[0x10000], Out[0x10000], Trash[0x10000];
unsigned char DP_In[0x10000], DP_Out[0x10000];

void init_vectrex_bios(void) {

  int i;

  for (i = 0; i < 0x10000; i++) {
    Name[i] = "";
    In[i] = Out[i] = Trash[i] = 0;
    DP_In[i] = DP_Out[i] = 0;
  }
  
  /*

      F8DE was not included in the register info:

;-----------------------------------------------------------------------;
;       F8D8    New_High_Score                                          ;
;                                                                       ;
; This routine compares a players score string, pointed to by the       ;
; X register, to the current hi score, pointed by the U register.  If   ;
; the player's score is higher than the currently saved hi score, then  ;
; the player's score will be copied into the hi score buffer pointed    ;
; to by the U register.                                                 ;
;                                                                       ;
; ENTRY X-reg points to a player's score string                         ;
;       U-reg points to the high score string (usually $CBEB?)          ;
;                                                                       ;
;       X-reg, U-reg, D-reg trashed                                     ;
;-----------------------------------------------------------------------;

New_High_Score: BSR     Compare_Score   ;Compare the scores
                CMPA    #$01
                BNE     LF8E4           ;Return if X is not > U
LF8DE:          LDA     ,X+             ;Copy the new high score
                STA     ,U+
                BPL     LF8DE           ;until end of string encountered
LF8E4:          RTS
   */
Name[0xF8DE]   = "Text_Copy_String";
 In[0xF8DE]    = R_X|R_U;
 Out[0xF8DE]   = 0;
 Trash[0xF8DE] = R_X|R_U|R_A;



 
Name[0xF14C]   = "Init_VIA";
 In[0xF14C]    = 0;
 Out[0xF14C]   = R_DP;
   DP_Out[0xF14C] = 0xD0;
 Trash[0xF14C] = R_A|R_B|R_X;
Name[0xF164]   = "Init_OS_RAM";
 In[0xF164]    = 0;
 Out[0xF164]   = R_DP;
   DP_Out[0xF164] = 0xC8;
 Trash[0xF164] = R_A|R_B|R_X;
Name[0xF18B]   = "Init_OS";
 In[0xF18B]    = 0;
 Out[0xF18B]   = R_DP;
   DP_Out[0xF18B] = 0xD0;
 Trash[0xF18B] = R_A|R_B|R_X;
Name[0xF192]   = "Wait_Recal";
 In[0xF192]    = 0;
 Out[0xF192]   = R_DP;
   DP_Out[0xF192] = 0xD0;
 Trash[0xF192] = R_A|R_B|R_X;
Name[0xF1A2]   = "Set_Refresh";
 In[0xF1A2]    = R_DP;
   DP_In[0xF1A2] = 0xD0;
 Out[0xF1A2]   = 0;
 Trash[0xF1A2] = R_A|R_B;
Name[0xF1AA]   = "DP_to_D0";
 In[0xF1AA]    = 0;
 Out[0xF1AA]   = R_DP|R_A;              // A = 0xD0
   DP_Out[0xF1AA] = 0xD0;
 Trash[0xF1AA] = 0;
Name[0xF1AF]   = "DP_to_C8";
 In[0xF1AF]    = 0;
 Out[0xF1AF]   = R_DP|R_A;              // A = 0xC8
   DP_Out[0xF1AF] = 0xC8;
 Trash[0xF1AF] = 0;
Name[0xF1B4]   = "Read_Btns_Mask";
 In[0xF1B4]    = R_A;
 Out[0xF1B4]   = R_A;
 Trash[0xF1B4] = R_B|R_X;
Name[0xF1BA]   = "Read_Btns";
 In[0xF1BA]    = 0;
 Out[0xF1BA]   = R_A;
 Trash[0xF1BA] = R_B|R_X;
Name[0xF1F5]   = "Joy_Analog";
 In[0xF1F5]    = R_DP;
   DP_In[0xF1F5] = 0xD0;
 Out[0xF1F5]   = 0;
 Trash[0xF1F5] = R_A|R_X;
Name[0xF1F8]   = "Joy_Digital";
 In[0xF1F8]    = R_DP;
   DP_In[0xF1F8] = 0xD0;
 Out[0xF1F8]   = 0;
 Trash[0xF1F8] = R_A|R_X;
Name[0xF256]   = "Sound_Byte";
 In[0xF256]    = R_A|R_B;
 Out[0xF256]   = R_X;                   // X = 0xC800
 Trash[0xF256] = R_D;
Name[0xF259]   = "Sound_Byte_x";
 In[0xF259]    = R_A|R_B|R_X;
 Out[0xF259]   = 0;
 Trash[0xF259] = R_D;
Name[0xF25B]   = "Sound_Byte_raw";
 In[0xF25B]    = R_A|R_B;
 Out[0xF25B]   = 0;
 Trash[0xF25B] = R_D;
Name[0xF272]   = "Clear_Sound";
 In[0xF272]    = R_DP;
   DP_In[0xF272] = 0xD0;
 Out[0xF272]   = 0;
 Trash[0xF272] = R_A|R_B|R_X;
Name[0xF27D]   = "Sound_Bytes";
 In[0xF27D]    = R_DP|R_U;
   DP_In[0xF27D] = 0xD0;
 Out[0xF27D]   = 0;
 Trash[0xF27D] = R_A|R_B|R_X|R_U;
Name[0xF284]   = "Sound_Bytes_x";
 In[0xF284]    = R_DP|R_U;
   DP_In[0xF284] = 0xD0;
 Out[0xF284]   = 0;
 Trash[0xF284] = R_A|R_B|R_X|R_U;
Name[0xF289]   = "Do_Sound";
 In[0xF289]    = R_DP;
   DP_In[0xF289] = 0xD0;
 Out[0xF289]   = 0;
 Trash[0xF289] = R_A|R_B|R_X|R_U;
Name[0xF28C]   = "Do_Sound_x";
 In[0xF28C]    = R_DP;
   DP_In[0xF28C] = 0xD0;
 Out[0xF28C]   = 0;
 Trash[0xF28C] = R_A|R_B|R_X|R_U;
Name[0xF29D]   = "Intensity_1F";
 In[0xF29D]    = R_DP|R_A;
   DP_In[0xF29D] = 0xD0;
 Out[0xF29D]   = 0;
 Trash[0xF29D] = R_A|R_B;
Name[0xF2A1]   = "Intensity_3F";
 In[0xF2A1]    = R_DP|R_A;
   DP_In[0xF2A1] = 0xD0;
 Out[0xF2A1]   = 0;
 Trash[0xF2A1] = R_A|R_B;
Name[0xF2A5]   = "Intensity_5F";
 In[0xF2A5]    = R_DP|R_A;
   DP_In[0xF2A5] = 0xD0;
 Out[0xF2A5]   = 0;
 Trash[0xF2A5] = R_A|R_B;
Name[0xF2A9]   = "Intensity_7F";
 In[0xF2A9]    = R_DP|R_A;
   DP_In[0xF2A9] = 0xD0;
 Out[0xF2A9]   = 0;
 Trash[0xF2A9] = R_A|R_B;
Name[0xF2AB]   = "Intensity_a";
 In[0xF2AB]    = R_DP|R_A;
   DP_In[0xF2AB] = 0xD0;
 Out[0xF2AB]   = 0;
 Trash[0xF2AB] = R_A|R_B;
Name[0xF2BE]   = "Dot_ix_b";
 In[0xF2BE]    = R_X|R_B;
 Out[0xF2BE]   = R_X;
 Trash[0xF2BE] = R_A|R_B;
Name[0xF2C1]   = "Dot_ix";
 In[0xF2C1]    = R_X;
 Out[0xF2C1]   = R_X;
 Trash[0xF2C1] = R_A|R_B;
Name[0xF2C3]   = "Dot_d";
 In[0xF2C3]    = R_DP|R_A|R_B;
   DP_In[0xF2C3] = 0xD0;
 Out[0xF2C3]   = 0;
 Trash[0xF2C3] = R_A|R_B;
Name[0xF2C5]   = "Dot_here";
 In[0xF2C5]    = R_DP;
   DP_In[0xF2C5] = 0xD0;
 Out[0xF2C5]   = 0;
 Trash[0xF2C5] = R_A|R_B;
Name[0xF2D5]   = "Dot_List";
 In[0xF2D5]    = R_DP|R_X;
   DP_In[0xF2D5] = 0xD0;
 Out[0xF2D5]   = R_X;
 Trash[0xF2D5] = R_A|R_B;
Name[0xF2DE]   = "Dot_List_Reset";
 In[0xF2DE]    = R_DP|R_X;
   DP_In[0xF2DE] = 0xD0;
 Out[0xF2DE]   = R_X;
 Trash[0xF2DE] = R_A|R_B;
Name[0xF2E6]   = "Recalibrate";
 In[0xF2E6]    = R_DP;
   DP_In[0xF2E6] = 0xD0;
 Out[0xF2E6]   = 0;
 Trash[0xF2E6] = R_A|R_B|R_X;
Name[0xF2F2]   = "Moveto_x_7F";
 In[0xF2F2]    = R_DP|R_X;
   DP_In[0xF2F2] = 0xD0;
 Out[0xF2F2]   = 0;
 Trash[0xF2F2] = R_A|R_B;
Name[0xF2FC]   = "Moveto_d_7F";
 In[0xF2FC]    = R_DP|R_A|R_B;
   DP_In[0xF2FC] = 0xD0;
 Out[0xF2FC]   = 0;
 Trash[0xF2FC] = R_A|R_B;
Name[0xF308]   = "Moveto_ix_FF";
 In[0xF308]    = R_DP|R_X;
   DP_In[0xF308] = 0xD0;
 Out[0xF308]   = R_X;
 Trash[0xF308] = R_A|R_B;
Name[0xF30C]   = "Moveto_ix_7F";
 In[0xF30C]    = R_DP|R_X;
   DP_In[0xF30C] = 0xD0;
 Out[0xF30C]   = R_X;
 Trash[0xF30C] = R_A|R_B;
Name[0xF30E]   = "Moveto_ix_b";
 In[0xF30E]    = R_DP|R_B|R_X;
   DP_In[0xF30E] = 0xD0;
 Out[0xF30E]   = R_X;
 Trash[0xF30E] = R_A|R_B;
Name[0xF310]   = "Moveto_ix";
 In[0xF310]    = R_DP|R_X;
   DP_In[0xF310] = 0xD0;
 Out[0xF310]   = R_X;
 Trash[0xF310] = R_A|R_B;
Name[0xF312]   = "Moveto_d";
 In[0xF312]    = R_DP|R_A|R_B;
   DP_In[0xF312] = 0xD0;
 Out[0xF312]   = 0;
 Trash[0xF312] = R_D;
Name[0xF34A]   = "Reset0Ref_D0";
 In[0xF34A]    = 0;
 Out[0xF34A]   = R_DP;
   DP_Out[0xF34A] = 0xD0;
 Trash[0xF34A] = R_A|R_B;
Name[0xF34F]   = "Check0Ref";
 In[0xF34F]    = R_DP;
   DP_In[0xF34F] = 0xD0;
 Out[0xF34F]   = 0;
 Trash[0xF34F] = R_A|R_B;
Name[0xF354]   = "Reset0Ref";
 In[0xF354]    = R_DP;
   DP_In[0xF354] = 0xD0;
 Out[0xF354]   = 0;
 Trash[0xF354] = R_A|R_B;
Name[0xF35B]   = "Reset_Pen";
 In[0xF35B]    = R_DP;
   DP_In[0xF35B] = 0xD0;
 Out[0xF35B]   = 0;
 Trash[0xF35B] = R_A|R_B;
Name[0xF36B]   = "Reset0Int";
 In[0xF36B]    = R_DP;
   DP_In[0xF36B] = 0xD0;
 Out[0xF36B]   = 0;
 Trash[0xF36B] = R_A|R_B;
Name[0xF373]   = "Print_Str_hwyx";
 In[0xF373]    = R_DP|R_U;
   DP_In[0xF373] = 0xD0;
 Out[0xF373]   = R_U;
 Trash[0xF373] = R_A|R_B|R_X;
Name[0xF378]   = "Print_Str_yx";
 In[0xF378]    = R_DP|R_U;
   DP_In[0xF378] = 0xD0;
 Out[0xF378]   = R_U;
 Trash[0xF378] = R_A|R_B|R_X;
Name[0xF37A]   = "Print_Str_d";
 In[0xF37A]    = R_DP|R_U|R_A|R_B;
   DP_In[0xF37A] = 0xD0;
 Out[0xF37A]   = R_U;
 Trash[0xF37A] = R_A|R_B|R_X;
Name[0xF385]   = "Print_List_hw";
 In[0xF385]    = R_DP|R_U;
   DP_In[0xF385] = 0xD0;
 Out[0xF385]   = R_U;
 Trash[0xF385] = R_A|R_B|R_X;
Name[0xF38A]   = "Print_List";
 In[0xF38A]    = R_DP|R_U;
   DP_In[0xF38A] = 0xD0;
 Out[0xF38A]   = R_U;
 Trash[0xF38A] = R_A|R_B|R_X;
Name[0xF38C]   = "Print_List_chk";
 In[0xF38C]    = R_DP|R_U;
   DP_In[0xF38C] = 0xD0;
 Out[0xF38C]   = R_U;
 Trash[0xF38C] = R_A|R_B|R_X;
Name[0xF391]   = "Print_Ships_x";
 In[0xF391]    = R_DP|R_A|R_B|R_X;
   DP_In[0xF391] = 0xD0;
 Out[0xF391]   = 0;
 Trash[0xF391] = R_B|R_X|R_U;
Name[0xF393]   = "Print_Ships";
 In[0xF393]    = R_DP|R_A|R_B|R_X;
   DP_In[0xF393] = 0xD0;
 Out[0xF393]   = 0;
 Trash[0xF393] = R_B|R_X|R_U;
Name[0xF3AD]   = "Mov_Draw_VLc_a";
 In[0xF3AD]    = R_DP|R_X;
   DP_In[0xF3AD] = 0xD0;
 Out[0xF3AD]   = R_X;
 Trash[0xF3AD] = R_A|R_B;
Name[0xF3B1]   = "Mov_Draw_VL_b";
 In[0xF3B1]    = R_DP|R_B|R_X;
   DP_In[0xF3B1] = 0xD0;
 Out[0xF3B1]   = R_X;
 Trash[0xF3B1] = R_A|R_B;
Name[0xF3B5]   = "Mov_Draw_VLcs";
 In[0xF3B5]    = R_DP|R_X;
   DP_In[0xF3B5] = 0xD0;
 Out[0xF3B5]   = R_X;
 Trash[0xF3B5] = R_A|R_B;
Name[0xF3B7]   = "Mov_Draw_VL_ab";
 In[0xF3B7]    = R_DP|R_A|R_B|R_X;
   DP_In[0xF3B7] = 0xD0;
 Out[0xF3B7]   = R_X;
 Trash[0xF3B7] = R_A|R_B;
Name[0xF3B9]   = "Mov_Draw_VL_a";
 In[0xF3B9]    = R_DP|R_A|R_X;
   DP_In[0xF3B9] = 0xD0;
 Out[0xF3B9]   = R_X;
 Trash[0xF3B9] = R_A|R_B;
Name[0xF3BC]   = "Mov_Draw_VL";
 In[0xF3BC]    = R_DP|R_X;
   DP_In[0xF3BC] = 0xD0;
 Out[0xF3BC]   = R_X;
 Trash[0xF3BC] = R_A|R_B;
Name[0xF3BE]   = "Mov_Draw_VL_d";
 In[0xF3BE]    = R_DP|R_A|R_B|R_X;
   DP_In[0xF3BE] = 0xD0;
 Out[0xF3BE]   = R_X;
 Trash[0xF3BE] = R_A|R_B;
Name[0xF3CE]   = "Draw_VLc";
 In[0xF3CE]    = R_DP|R_X;
   DP_In[0xF3CE] = 0xD0;
 Out[0xF3CE]   = R_X;
 Trash[0xF3CE] = R_A|R_B;
Name[0xF3D2]   = "Draw_VL_b";
 In[0xF3D2]    = R_DP|R_B|R_X;
   DP_In[0xF3D2] = 0xD0;
 Out[0xF3D2]   = R_X;
 Trash[0xF3D2] = R_A|R_B;
Name[0xF3D6]   = "Draw_VLcs";
 In[0xF3D6]    = R_DP|R_X;
   DP_In[0xF3D6] = 0xD0;
 Out[0xF3D6]   = R_X;
 Trash[0xF3D6] = R_A|R_B;
Name[0xF3D8]   = "Draw_VL_ab";
 In[0xF3D8]    = R_A|R_B|R_X;
 Out[0xF3D8]   = R_X;
 Trash[0xF3D8] = R_A|R_B;
Name[0xF3DA]   = "Draw_VL_a";
 In[0xF3DA]    = R_DP|R_A|R_X;
   DP_In[0xF3DA] = 0xD0;
 Out[0xF3DA]   = R_X;
 Trash[0xF3DA] = R_A|R_B;
Name[0xF3DD]   = "Draw_VL";
 In[0xF3DD]    = R_DP|R_X;
   DP_In[0xF3DD] = 0xD0;
 Out[0xF3DD]   = R_X;
 Trash[0xF3DD] = R_A|R_B;
Name[0xF3DF]   = "Draw_Line_d";
 In[0xF3DF]    = R_DP|R_A|R_B|R_X;
   DP_In[0xF3DF] = 0xD0;
 Out[0xF3DF]   = R_X;
 Trash[0xF3DF] = R_A|R_B;
Name[0xF404]   = "Draw_VLp_FF";
 In[0xF404]    = R_DP|R_X;
   DP_In[0xF404] = 0xD0;
 Out[0xF404]   = R_X;
 Trash[0xF404] = R_A|R_B;
Name[0xF408]   = "Draw_VLp_7F";
 In[0xF408]    = R_DP|R_X;
   DP_In[0xF408] = 0xD0;
 Out[0xF408]   = R_X;
 Trash[0xF408] = R_A|R_B;
Name[0xF40C]   = "Draw_VLp_scale";
 In[0xF40C]    = R_DP|R_X;
   DP_In[0xF40C] = 0xD0;
 Out[0xF40C]   = R_X;
 Trash[0xF40C] = R_A|R_B;
Name[0xF40E]   = "Draw_VLp_b";
 In[0xF40E]    = R_DP|R_B|R_X;
   DP_In[0xF40E] = 0xD0;
 Out[0xF40E]   = R_X;
 Trash[0xF40E] = R_A|R_B;
Name[0xF410]   = "Draw_VLp";
 In[0xF410]    = R_DP|R_X;
   DP_In[0xF410] = 0xD0;
 Out[0xF410]   = R_X;
 Trash[0xF410] = R_A|R_B;
Name[0xF434]   = "Draw_Pat_VL_a";
 In[0xF434]    = R_X|R_A;
 Out[0xF434]   = R_X;
 Trash[0xF434] = R_A|R_B;
Name[0xF437]   = "Draw_Pat_VL";
 In[0xF437]    = R_X;
 Out[0xF437]   = R_X;
 Trash[0xF437] = R_A|R_B;
Name[0xF439]   = "Draw_Pat_VL_d";
 In[0xF439]    = R_X|R_D;
 Out[0xF439]   = R_X;
 Trash[0xF439] = R_A|R_B;
Name[0xF46E]   = "Draw_VL_mode";
 In[0xF46E]    = R_DP|R_X;
   DP_In[0xF46E] = 0xD0;
 Out[0xF46E]   = R_X;
 Trash[0xF46E] = R_A|R_B;
Name[0xF495]   = "Print_Str";
 In[0xF495]    = R_DP|R_U;
   DP_In[0xF495] = 0xD0;
 Out[0xF495]   = R_U;
 Trash[0xF495] = R_A|R_B|R_X;
Name[0xF511]   = "Random_3";
 In[0xF511]    = 0;
 Out[0xF511]   = R_A;
 Trash[0xF511] = 0;
Name[0xF517]   = "Random";
 In[0xF517]    = 0;
 Out[0xF517]   = R_A;
 Trash[0xF517] = 0;
Name[0xF533]   = "Init_Music_Buf";
 In[0xF533]    = 0;
 Out[0xF533]   = 0;
 Trash[0xF533] = R_A|R_B|R_X;
Name[0xF53F]   = "Clear_x_b";
 In[0xF53F]    = R_X|R_B;
 Out[0xF53F]   = 0;
 Trash[0xF53F] = R_A|R_B;
Name[0xF542]   = "Clear_C8_RAM";
 In[0xF542]    = 0;
 Out[0xF542]   = 0;
 Trash[0xF542] = R_A|R_B|R_X;
Name[0xF545]   = "Clear_x_256";
 In[0xF545]    = R_X|R_A|R_B;
 Out[0xF545]   = R_D;                   // D = 0xFFFF
 Trash[0xF545] = 0;
Name[0xF548]   = "Clear_x_d";
 In[0xF548]    = R_X|R_A|R_B;
 Out[0xF548]   = R_D;                   // D = 0xFFFF
 Trash[0xF548] = 0;
Name[0xF550]   = "Clear_x_b_80";
 In[0xF550]    = R_A|R_B|R_X;
 Out[0xF550]   = R_A|R_B;               // A = 0x80  B = 0x00
 Trash[0xF550] = 0;
Name[0xF552]   = "Clear_x_b_a";
 In[0xF552]    = R_A|R_B|R_X;
 Out[0xF552]   = R_B;                   // B = 0x00
 Trash[0xF552] = R_A;
Name[0xF55A]   = "Dec_3_Counters";
 In[0xF55A]    = 0;
 Out[0xF55A]   = R_X|R_B;               // X = 0xC82E  B = 0xFF
 Trash[0xF55A] = 0;
Name[0xF55E]   = "Dec_6_Counters";
 In[0xF55E]    = 0;
 Out[0xF55E]   = R_X|R_B;               // X = 0xC82E  B = 0xFF
 Trash[0xF55E] = 0;
Name[0xF563]   = "Dec_Counters";
 In[0xF563]    = R_B|R_X;
 Out[0xF563]   = R_B;                   // B = 0xFF
 Trash[0xF563] = 0;
Name[0xF56D]   = "Delay_3";
 In[0xF56D]    = 0;
 Out[0xF56D]   = R_B;                   // B = 0xFF
 Trash[0xF56D] = 0;
Name[0xF571]   = "Delay_2";
 In[0xF571]    = 0;
 Out[0xF571]   = R_B;                   // B = 0xFF
 Trash[0xF571] = 0;
Name[0xF575]   = "Delay_1";
 In[0xF575]    = 0;
 Out[0xF575]   = R_B;                   // B = 0xFF
 Trash[0xF575] = 0;
Name[0xF579]   = "Delay_0";
 In[0xF579]    = 0;
 Out[0xF579]   = R_B;                   // B = 0xFF
 Trash[0xF579] = 0;
Name[0xF57A]   = "Delay_b";
 In[0xF57A]    = R_B;
 Out[0xF57A]   = R_B;                   // B = 0xFF
 Trash[0xF57A] = 0;
Name[0xF57D]   = "Delay_RTS";
 In[0xF57D]    = 0;
 Out[0xF57D]   = 0;
 Trash[0xF57D] = 0;
Name[0xF57E]   = "Bitmask_a";
 In[0xF57E]    = R_A;
 Out[0xF57E]   = R_A;
 Trash[0xF57E] = R_X;
Name[0xF584]   = "Abs_a_b";
 In[0xF584]    = R_A|R_B;
 Out[0xF584]   = R_A|R_B;
 Trash[0xF584] = 0;
Name[0xF58B]   = "Abs_b";
 In[0xF58B]    = R_A;
 Out[0xF58B]   = R_A;
 Trash[0xF58B] = 0;
Name[0xF593]   = "Rise_Run_Angle";
 In[0xF593]    = R_A|R_B|R_DP;
   DP_In[0xF593] = 0xC8;
 Out[0xF593]   = R_A|R_B;
 Trash[0xF593] = 0;
Name[0xF5D9]   = "Get_Rise_Idx";
 In[0xF5D9]    = R_A;
 Out[0xF5D9]   = R_A|R_B;
 Trash[0xF5D9] = R_X;
Name[0xF5DB]   = "Get_Run_Idx";
 In[0xF5DB]    = R_A;
 Out[0xF5DB]   = R_A|R_B;
 Trash[0xF5DB] = R_X;
Name[0xF5EF]   = "Rise_Run_Idx";
 In[0xF5EF]    = R_DP;
   DP_In[0xF5EF] = 0xC8;
 Out[0xF5EF]   = 0;
 Trash[0xF5EF] = R_A|R_B;
Name[0xF5FF]   = "Rise_Run_X";
 In[0xF5FF]    = R_A|R_B;
 Out[0xF5FF]   = R_A|R_B;
 Trash[0xF5FF] = 0;
Name[0xF601]   = "Rise_Run_Y";
 In[0xF601]    = R_A|R_B;
 Out[0xF601]   = R_A|R_B;
 Trash[0xF601] = 0;
Name[0xF603]   = "Rise_Run_Len";
 In[0xF603]    = R_A|R_B;
 Out[0xF603]   = R_A|R_B;
 Trash[0xF603] = 0;
Name[0xF610]   = "Rot_VL_ab";
 In[0xF610]    = R_A|R_B|R_X|R_U;
 Out[0xF610]   = R_DP|R_X|R_U;
   DP_Out[0xF610] = 0xC8;
 Trash[0xF610] = R_A|R_B;
Name[0xF616]   = "Rot_VL";
 In[0xF616]    = R_A|R_B|R_X|R_U;
 Out[0xF616]   = R_DP|R_X|R_U;
   DP_Out[0xF616] = 0xC8;
 Trash[0xF616] = R_A|R_B;
Name[0xF61F]   = "Rot_VL_Mode";
 In[0xF61F]    = R_DP|R_A|R_X|R_U;
   DP_In[0xF61F] = 0xC8;
 Out[0xF61F]   = R_X|R_U;
 Trash[0xF61F] = R_A|R_B;
Name[0xF62B]   = "Rot_VL_M_dft";
 In[0xF62B]    = R_DP|R_A|R_X|R_U;
   DP_In[0xF62B] = 0xC8;
 Out[0xF62B]   = R_X|R_U;
 Trash[0xF62B] = R_A|R_B;
Name[0xF65B]   = "Xform_Run_a";
 In[0xF65B]    = R_DP|R_A;
   DP_In[0xF65B] = 0xC8;
 Out[0xF65B]   = R_A;
 Trash[0xF65B] = R_B;
Name[0xF65D]   = "Xform_Run";
 In[0xF65D]    = R_DP;
   DP_In[0xF65D] = 0xC8;
 Out[0xF65D]   = R_A;
 Trash[0xF65D] = R_B;
Name[0xF661]   = "Xform_Rise_a";
 In[0xF661]    = R_DP|R_A;
   DP_In[0xF661] = 0xC8;
 Out[0xF661]   = R_A;
 Trash[0xF661] = R_B;
Name[0xF663]   = "Xform_Rise";
 In[0xF663]    = R_DP;
   DP_In[0xF663] = 0xC8;
 Out[0xF663]   = R_A;
 Trash[0xF663] = R_B;
Name[0xF67F]   = "Move_Mem_a_1";
 In[0xF67F]    = R_A|R_X|R_U;
 Out[0xF67F]   = R_A|R_B;               // A = 0xFF
 Trash[0xF67F] = 0;
Name[0xF683]   = "Move_Mem_a";
 In[0xF683]    = R_A|R_X|R_U;
 Out[0xF683]   = R_A|R_B;               // A = 0xFF
 Trash[0xF683] = 0;
Name[0xF687]   = "Init_Music_chk";
 In[0xF687]    = R_DP|R_U;
   DP_In[0xF687] = 0xC8;
 Out[0xF687]   = 0;
 Trash[0xF687] = R_A|R_B|R_X|R_Y|R_U;
Name[0xF68D]   = "Init_Music";
 In[0xF68D]    = R_DP|R_U;
   DP_In[0xF68D] = 0xC8;
 Out[0xF68D]   = 0;
 Trash[0xF68D] = R_A|R_B|R_X|R_Y|R_U;
Name[0xF692]   = "Init_Music_dft";
 In[0xF692]    = R_DP|R_U;
   DP_In[0xF692] = 0xC8;
 Out[0xF692]   = 0;
 Trash[0xF692] = R_A|R_B|R_X|R_Y|R_U;
Name[0xF7A9]   = "Select_Game";
 In[0xF7A9]    = R_A|R_B;
 Out[0xF7A9]   = R_DP;
   DP_Out[0xF7A9] = 0xC8;
 Trash[0xF7A9] = R_A|R_B|R_X|R_Y;
Name[0xF835]   = "Display_Option";
 In[0xF835]    = R_A|R_Y;
 Out[0xF835]   = 0;
 Trash[0xF835] = R_A|R_B|R_U|R_X;
Name[0xF84F]   = "Clear_Score";
 In[0xF84F]    = R_X;
 Out[0xF84F]   = 0;
 Trash[0xF84F] = R_A|R_B;
Name[0xF85E]   = "Add_Score_a";
 In[0xF85E]    = R_A|R_U|R_X;
 Out[0xF85E]   = 0;
 Trash[0xF85E] = R_A|R_B;
Name[0xF87C]   = "Add_Score_d";
 In[0xF87C]    = R_A|R_B|R_X;
 Out[0xF87C]   = 0;
 Trash[0xF87C] = R_A|R_B;
Name[0xF8B7]   = "Strip_Zeros";
 In[0xF8B7]    = R_B|R_X;
 Out[0xF8B7]   = 0;
 Trash[0xF8B7] = R_A|R_B;
Name[0xF8C7]   = "Compare_Score";
 In[0xF8C7]    = R_X|R_U;
 Out[0xF8C7]   = R_A;
 Trash[0xF8C7] = R_B;
Name[0xF8D8]   = "New_High_Score";
 In[0xF8D8]    = R_X|R_U;
 Out[0xF8D8]   = 0;
 Trash[0xF8D8] = R_X|R_U|R_A|R_B;
Name[0xF8E5]   = "Obj_Will_Hit_u";
 In[0xF8E5]    = R_X|R_Y|R_U|R_A|R_B;
 Out[0xF8E5]   = R_C;
 Trash[0xF8E5] = 0;
Name[0xF8F3]   = "Obj_Will_Hit";
 In[0xF8F3]    = R_X|R_Y|R_U|R_A|R_B;
 Out[0xF8F3]   = R_C;
 Trash[0xF8F3] = 0;
Name[0xF8FF]   = "Obj_Hit";
 In[0xF8FF]    = R_X|R_Y|R_A|R_B;
 Out[0xF8FF]   = R_C;
 Trash[0xF8FF] = 0;
Name[0xF92E]   = "Explosion_Snd";
 In[0xF92E]    = R_DP|R_U;
   DP_In[0xF92E] = 0xC8;
 Out[0xF92E]   = 0;
 Trash[0xF92E] = R_A|R_B|R_X;
Name[0xFF9F]   = "Draw_Grid_VL";
 In[0xFF9F]    = R_DP|R_X|R_Y;
   DP_In[0xFF9F] = 0xD0;
 Out[0xFF9F]   = R_X|R_Y;
 Trash[0xFF9F] = R_A|R_B;
}
