⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2c3.c

📁 z80的软件仿真程序以及源代码
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<z8.h>
void com_djnz(FILE *p,struct coms cms,struct know_add adk[128])
{unsigned int a,n;
int i,j;
a=0x10;BYTE;
if(Is_num(cms.di[0]))
  {i=num_e(cms.di);
   if(i<-126||i>129){printf("[%d]Over 7Fh!",No-1);exit(0);}
   i=i-2;a=i;BYTE;return;
   }
   else{i=find_ad(adk,cms.di);
        if(i==-1){PREC(cms.di);exit(0);}
        n=adk[i].knad;j=n-pc;j=j-1;if(j<-126){printf("[%d]Over 7Fh!",No-1);exit(0);}
        a=j;BYTE;return;
	}
}
void com_jr(FILE *p,struct coms cms)
{unsigned int a,n;
int i;
if(cms.si[0]==0)
  {a=0x18;BYTE;
   i=num_e(cms.di);
   if(i<-126||i>129){printf("[%d]Over 7Fh!",No-1);exit(0);}
   i=i-2;a=i;BYTE;return;}
else{if(cms.di[0]=='c'||cms.di[0]=='C'){a=0x38;BYTE;}
     else if((cms.di[0]=='n'&&cms.di[1]=='c')||(cms.di[0]=='N'&&cms.di[1]=='C'))
            {a=0x30;BYTE;}
     else if(cms.di[0]=='z'||cms.di[0]=='Z'){a=0x28;BYTE;}
     else if((cms.di[0]=='n'&&cms.di[1]=='z')||(cms.di[0]=='N'&&cms.di[1]=='Z'))
            {a=0x20;BYTE;}
     else{printf("[%d]Error",No-1);exit(0);}
   i=num_e(cms.si);
   if(i<-126||i>129){printf("[%d]Over 7Fh!",No-1);exit(0);}
   i=i-2;a=i;BYTE;return;
    }
}
void com_ret(FILE *p,struct coms cms)
{unsigned int a;
if(cms.com[3]=='n'||cms.com[3]=='N'){a=0x45ed;WORD;return;}
else if(cms.com[3]=='i'||cms.com[3]=='I'){a=0x4ded;WORD;return;}
else if(cms.di[0]==0){a=0xc9;BYTE;return;}
else{if(cms.di[0]=='n'||cms.di[0]=='N')
   {if(cms.di[1]=='z'||cms.di[1]=='Z'){a=0xc0;BYTE;return;}else if(cms.di[1]=='c'||cms.di[1]=='C')
       {a=0xd0;BYTE;return;}
    }
     else if(cms.di[0]=='z'||cms.di[0]=='Z'){a=0xc8;BYTE;return;}
     else if(cms.di[0]=='c'||cms.di[0]=='C'){a=0xd8;BYTE;return;}
     else if(cms.di[0]=='p'||cms.di[0]=='P')
    {if(cms.di[1]=='o'||cms.di[1]=='O'){a=0xe0;BYTE;return;}else if(cms.di[1]=='e'||cms.di[1]=='E')
      {a=0xe8;BYTE;return;}else if(cms.di[1]==0){a=0xf0;BYTE;return;}
     }
     else if(cms.di[0]=='m'||cms.di[0]=='M'){a=0xf8;BYTE;return;}
     }printf("[%d]Error",No-1);exit(0);
}
void com_call(FILE *p,struct coms cms,struct know_add adk[128],
struct unknow_add adn[128])
{unsigned int a,n;
int i;
if(cms.si[0]==0)
 {a=0xcd;BYTE;
   if(Is_char(cms.di[0]))
  {
    i=find_ad(adk,cms.di);
   if(i!=-1){a=adk[i].knad;WORD;return;}
   else {adn[adni].unad=pc;strcpy(adn[adni].unf,cms.di);adni++;
   a=0xffff;WORD;return;}
   }else if(Is_num(cms.di[0])){a=ljs(cms.di);WORD;return;}
 }
 else if(Is_char(cms.di[0]))
 {if(cms.di[0]=='n'||cms.di[0]=='N')
   {if(cms.di[1]=='z'||cms.di[1]=='Z'){a=0xc4;BYTE;}else if(cms.di[1]=='c'||cms.di[1]=='C')
       {a=0xd4;BYTE;}
    }
     else if(cms.di[0]=='z'||cms.di[0]=='Z'){a=0xcc;BYTE;}
     else if(cms.di[0]=='c'||cms.di[0]=='C'){a=0xdc;BYTE;}
     else if(cms.di[0]=='p'||cms.di[0]=='P')
    {if(cms.di[1]=='o'||cms.di[1]=='O'){a=0xe4;BYTE;}else if(cms.di[1]=='e'||cms.di[1]=='E')
      {a=0xec;BYTE;}else if(cms.di[1]==0){a=0xf4;BYTE;}
     }
     else if(cms.di[0]=='m'||cms.di[0]=='M'){a=0xfc;BYTE;}
   if(Is_char(cms.si[0]))
  {i=find_ad(adk,cms.si);
   if(i!=-1){a=adk[i].knad;WORD;return;}
   else {adn[adni].unad=pc;strcpy(adn[adni].unf,cms.si);adni++;
   a=0xffff;WORD;return;}
   }
    else if(Is_num(cms.si[0])){a=ljs(cms.si);WORD;return;}
  }
printf("[%d]Error",No-1);exit(0);}
void com_jmp(FILE *p,struct coms cms,struct know_add adk[128],
struct unknow_add adn[128])
{unsigned int a,n;
int i,j;
if(cms.si[0]==0)
 {if(Is_char(cms.di[0]))
  {a=0xc3;BYTE;
    i=find_ad(adk,cms.di);
   if(i!=-1){a=adk[i].knad;WORD;return;}
   else {adn[adni].unad=pc;strcpy(adn[adni].unf,cms.di);adni++;
   a=0xffff;WORD;return;}
   }
  else if(Is_num(cms.di[0])){a=0xc3;BYTE;a=ljs(cms.di);WORD;return;}
  else if(cms.di[0]=='('||cms.di[0]=='[')
  {if((cms.di[1]=='h'&&cms.di[2]=='l')||(cms.di[1]=='H'&&cms.di[2]=='L')){a=0xe9;BYTE;return;}
   if(cms.di[1]=='i'||cms.di[1]=='I'){if(cms.di[2]=='x'||cms.di[2]=='X'){a=0xe9dd;WORD;return;}
   else if(cms.di[2]=='y'||cms.di[2]=='Y'){a=0xe9fd;WORD;return;} else{PREC(cms.di);exit(0);}}
   else{PREC(cms.di);exit(0);}
  }
   else{PREC(cms.di);exit(0);}
 }
 else if(Is_char(cms.di[0]))
 {if(cms.di[0]=='n'||cms.di[0]=='N')
   {if(cms.di[1]=='z'||cms.di[1]=='Z'){a=0xc2;BYTE;}else if(cms.di[1]=='c'||cms.di[1]=='C')
       {a=0xd2;BYTE;}
    }
     else if(cms.di[0]=='z'||cms.di[0]=='Z'){a=0xca;BYTE;}
     else if(cms.di[0]=='c'||cms.di[0]=='C'){a=0xda;BYTE;}
     else if(cms.di[0]=='p'||cms.di[0]=='P')
    {if(cms.di[1]=='o'||cms.di[1]=='O'){a=0xe2;BYTE;}else if(cms.di[1]=='e'||cms.di[1]=='E')
      {a=0xea;BYTE;}else if(cms.di[1]==0){a=0xf2;BYTE;}
     }
     else if(cms.di[0]=='m'||cms.di[0]=='M'){a=0xfa;BYTE;}
   if(Is_char(cms.si[0]))
  {i=find_ad(adk,cms.si);
   if(i!=-1){a=adk[i].knad;WORD;return;}
   else {adn[adni].unad=pc;strcpy(adn[adni].unf,cms.si);adni++;
   a=0xffff;WORD;return;}
   }
    else if(Is_num(cms.si[0])){a=ljs(cms.si);WORD;return;}
  }
printf("[%d]Error",No-1);exit(0);}
void com_set(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,m,n;
int i,j;
if(Is_char(cms.si[0]))
  {a=0xcb;BYTE;
   a=0xc0;m=bit_b(cms.di);n=bit_si(cms.si);a=a+m+n;BYTE;return;
  }
else if(cms.si[0]=='('||cms.si[0]=='[')
       {if((cms.si[1]=='h'&&cms.si[2]=='l')||(cms.si[1]=='H'&&cms.si[2]=='L'))
	  {a=0xcb;BYTE;a=0xc6;m=bit_b(cms.di);a=a+m;BYTE;return;}
       else if(cms.si[1]=='i'||cms.si[1]=='I')
              {if(cms.si[2]=='x'||cms.si[2]=='X'){a=0xcbdd;WORD;}
               else if(cms.si[2]=='y'||cms.si[2]=='Y'){a=0xcbfd;WORD;}
               else{PREC(cms.si);exit(0);}
               if(cms.si[3]=='+')
                 {j=0;for(i=4;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
                         {cms.si[j]=cms.si[i];j++;}cms.si[j]=0;
                          if(Is_num(cms.si[0]))a=ljs(cms.si);
                           else {i=find_da(dseg,cms.si);
                           if(i==-1){PREC(cms.si);exit(0);}
                           a=dseg[i].data;}if(a>0xff){OVER(a);exit(0);}
                   }
                else a=0;BYTE;
                a=0xc6;m=bit_b(cms.di);a=a+m;BYTE;return;
                }
        }
        printf("[%d]Error",No-1);exit(0);   
}
void com_res(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,m,n;
int i,j;
if(Is_char(cms.si[0]))
  {a=0xcb;BYTE;
   a=0x80;m=bit_b(cms.di);n=bit_si(cms.si);a=a+m+n;BYTE;return;
  }
else if(cms.si[0]=='('||cms.si[0]=='[')
       {if((cms.si[1]=='h'&&cms.si[2]=='l')||(cms.si[1]=='H'&&cms.si[2]=='L'))
	  {a=0xcb;BYTE;a=0x86;m=bit_b(cms.di);a=a+m;BYTE;return;}
       else if(cms.si[1]=='i'||cms.si[1]=='I')
              {if(cms.si[2]=='x'||cms.si[2]=='X'){a=0xcbdd;WORD;}
               else if(cms.si[2]=='y'||cms.si[2]=='Y'){a=0xcbfd;WORD;}
               else{PREC(cms.si);exit(0);}
               if(cms.si[3]=='+')
                 {j=0;for(i=4;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
                         {cms.si[j]=cms.si[i];j++;}cms.si[j]=0;
                          if(Is_num(cms.si[0]))a=ljs(cms.si);
                           else {i=find_da(dseg,cms.si);
                           if(i==-1){PREC(cms.si);exit(0);}
                           a=dseg[i].data;}if(a>0xff){OVER(a);exit(0);}
                   }
                else a=0;BYTE;
                a=0x86;m=bit_b(cms.di);a=a+m;BYTE;return;
                }
        }
        printf("[%d]Error",No-1);exit(0);   
}
void com_bit(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,m,n;
int i,j;
if(Is_char(cms.si[0]))
  {a=0xcb;BYTE;
   a=0x40;m=bit_b(cms.di);n=bit_si(cms.si);a=a+m+n;BYTE;return;
  }
else if(cms.si[0]=='('||cms.si[0]=='[')
       {if((cms.si[1]=='h'&&cms.si[2]=='l')||(cms.si[1]=='H'&&cms.si[2]=='L'))
	  {a=0xcb;BYTE;a=0x46;m=bit_b(cms.di);a=a+m;BYTE;return;}
       else if(cms.si[1]=='i'||cms.si[1]=='I')
              {if(cms.si[2]=='x'||cms.si[2]=='X'){a=0xcbdd;WORD;}
               else if(cms.si[2]=='y'||cms.si[2]=='Y'){a=0xcbfd;WORD;}
               else{PREC(cms.si);exit(0);}
               if(cms.si[3]=='+')
                 {j=0;for(i=4;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
                         {cms.si[j]=cms.si[i];j++;}cms.si[j]=0;
                          if(Is_num(cms.si[0]))a=ljs(cms.si);
                           else {i=find_da(dseg,cms.si);
                           if(i==-1){PREC(cms.si);exit(0);}
                           a=dseg[i].data;}if(a>0xff){OVER(a);exit(0);}
                   }
                else a=0;BYTE;
                a=0x46;m=bit_b(cms.di);a=a+m;BYTE;return;
                }
        }
        printf("[%d]Error",No-1);exit(0);   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -