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

📄 2c1.c

📁 z80的软件仿真程序以及源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include<stdio.h>
#include<string.h>
#include<z8.h>
void com_add(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if((cms.di[0]=='h'&&cms.di[1]=='l')||(cms.di[0]=='H'&&cms.di[1]=='L'))
{a=0x9;n=word_bit(cms.si);if(n!=0xff){a=a+n;BYTE;return;}
else{PREC(cms.si);exit(0);}}
else if(cms.di[0]=='i'||cms.di[0]=='I')
{if(cms.di[1]=='x'||cms.di[1]=='X'){a=0xdd;BYTE;n=word_bit(cms.si);
if(n!=0xff){a=0x9;a=a+n;BYTE;return;}
else{PREC(cms.si);exit(0);}}
else if(cms.di[1]=='y'||cms.di[1]=='y'){a=0xfd;BYTE;n=word_bit(cms.si);
if(n!=0xff){a=0x9;a=a+n;BYTE;return;}else{PREC(cms.si);exit(0);}}
else{PREC(cms.di);exit(0);}}
else {if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0x80;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xc6;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
{j=i-1;cms.si[j]=cms.si[i];}cms.si[i-1]=0;
if((cms.si[0]=='h'||cms.si[0]=='H')&&(cms.si[1]=='l'||cms.si[1]=='L'))
{a=0x86;BYTE;return;}
else if(cms.si[0]=='i'||cms.si[0]=='I')
{if(cms.si[1]=='x'||cms.si[1]=='X')
 {a=0x86dd;WORD;if(cms.si[2]=='+')
  {j=0;
   for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
      {cms.si[j]=cms.si[i];}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;return;} 
else if(cms.si[1]=='y'||cms.si[1]=='Y')
 {a=0x86fd;WORD;if(cms.si[2]=='+')
   {j=0;
     for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
	{cms.si[j]=cms.si[i];}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;return;}}}}}
printf("[%d]Error",No-1);exit(0);}
void com_adc(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if((cms.di[0]=='h'&&cms.di[1]=='l')||(cms.di[0]=='H'&&cms.di[1]=='L'))
{a=0xed;BYTE;a=0x4a;n=word_bit(cms.si);if(n!=0xff){a=a+n;BYTE;return;}
else{PREC(cms.si);exit(0);}}
else {if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0x88;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xce;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
{j=i-1;cms.si[j]=cms.si[i];}cms.si[i-1]=0;
if((cms.si[0]=='h'||cms.si[0]=='H')&&(cms.si[1]=='l'||cms.si[1]=='L'))
{a=0x8e;BYTE;return;}
else if(cms.si[0]=='i'||cms.si[0]=='I')
{if(cms.si[1]=='x'||cms.si[1]=='X')
 {a=0x8edd;WORD;if(cms.si[2]=='+')
  {j=0;
   for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
      {cms.si[j]=cms.si[i];}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;return;} 
else if(cms.si[1]=='y'||cms.si[1]=='Y')
 {a=0x8efd;WORD;if(cms.si[2]=='+')
   {j=0;
     for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
	{cms.si[j]=cms.si[i];}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;return;}}}}}
printf("[%d]Error",No-1);exit(0);}
void com_sub(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0x90;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xd6;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
{j=i-1;cms.si[j]=cms.si[i];}cms.si[i-1]=0;
if((cms.si[0]=='h'||cms.si[0]=='H')&&(cms.si[1]=='l'||cms.si[1]=='L'))
{a=0x96;BYTE;return;}
else if(cms.si[0]=='i'||cms.si[0]=='I')
{if(cms.si[1]=='x'||cms.si[1]=='X')
 {a=0x96dd;WORD;if(cms.si[2]=='+')
  {j=0;
   for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
      {cms.si[j]=cms.si[i];}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;return;} 
else if(cms.si[1]=='y'||cms.si[1]=='Y')
 {a=0x96fd;WORD;if(cms.si[2]=='+')
   {j=0;
     for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
	{cms.si[j]=cms.si[i];}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;return;}}}}
printf("[%d]Error",No-1);exit(0);}
void com_sbc(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if((cms.di[0]=='h'&&cms.di[1]=='l')||(cms.di[0]=='H'&&cms.di[1]=='L'))
{a=0xed;BYTE;a=0x42;n=word_bit(cms.si);if(n!=0xff){a=a+n;BYTE;return;}
else{PREC(cms.si);exit(0);}}
else {if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0x98;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xde;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
{j=i-1;cms.si[j]=cms.si[i];}cms.si[i-1]=0;
if((cms.si[0]=='h'||cms.si[0]=='H')&&(cms.si[1]=='l'||cms.si[1]=='L'))
{a=0x9e;BYTE;return;}
else if(cms.si[0]=='i'||cms.si[0]=='I')
{if(cms.si[1]=='x'||cms.si[1]=='X')
 {a=0x9edd;WORD;if(cms.si[2]=='+')
  {j=0;
   for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
      {cms.si[j]=cms.si[i];}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;return;} 
else if(cms.si[1]=='y'||cms.si[1]=='Y')
 {a=0x9efd;WORD;if(cms.si[2]=='+')
   {j=0;
     for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
	{cms.si[j]=cms.si[i];}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;return;}}}}}
printf("[%d]Error",No-1);exit(0);}
void com_and(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0xa0;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xe6;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)
{j=i-1;cms.si[j]=cms.si[i];}cms.si[i-1]=0;
if((cms.si[0]=='h'||cms.si[0]=='H')&&(cms.si[1]=='l'||cms.si[1]=='L'))
{a=0xa6;BYTE;return;}
else if(cms.si[0]=='i'||cms.si[0]=='I')
{if(cms.si[1]=='x'||cms.si[1]=='X')
 {a=0xa6dd;WORD;if(cms.si[2]=='+')
  {j=0;
   for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
      {cms.si[j]=cms.si[i];}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;return;} 
else if(cms.si[1]=='y'||cms.si[1]=='Y')
 {a=0xa6fd;WORD;if(cms.si[2]=='+')
   {j=0;
     for(i=3;(Ture(cms.si[i]))&&cms.si[i]!=')'&&cms.si[i]!=']';i++,j++)
	{cms.si[j]=cms.si[i];}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;return;}}}}
printf("[%d]Error",No-1);exit(0);}
void com_or(FILE *p,struct coms cms,struct dataseg dseg[64])
{unsigned int a,n;
int i,j;
if(cms.si[0]==0){strcpy(cms.si,cms.di);cms.di[0]='a';cms.di[1]=0;}
if(cms.di[1]==0&&(cms.di[0]=='a'||cms.di[0]=='A'))
{if(Is_char(cms.si[0])){a=0xb0;n=bit_si(cms.si);
if(n<=0x7){a=a+n;BYTE;return;}else {PREC(cms.si);exit(0);}}
else if(cms.si[0]=='#')
{a=0xf6;BYTE;
for(i=0;Ture(cms.si[i]);i++)
{j=i+1;cms.si[i]=cms.si[j];}
if(Is_num(cms.si[0])){a=ljs(cms.si);
if(a>0xff){OVER(a);exit(0);}else{BYTE;return;}}
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);} BYTE;return;}}
else 
if(cms.si[0]=='('||cms.si[0]=='[')
{for(i=1;Ture(cms.si[i])&&cms.si[i]!=')'&&cms.si[i]!=']';i++)

⌨️ 快捷键说明

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