vm51_command.c

来自「c51 单片机模拟器C++文件格式元代纳一边以」· C语言 代码 · 共 64 行

C
64
字号
#include "vm51.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern unsigned int code_len;					// programme file length
const char * usage = "VM51.EXE [-d] <FILE.BIN>\n";

int	VM51_parse_command(int argc,char *argv[])
{
    int 	fd;
    int		i;
    int		n;
    int		len;
    char	param[MAX_LINE];
	char	*p;
    FILE	*fp;
    
    if (argc < 2){
        fprintf(stderr,"invalid commandline...\n"
    				   "USAGE:\n"
       				   "%s",usage);
        exit(-1);
	}    
    
    for(i=1;i<argc;i++){
#ifdef __VM51_DEBUG__
    printf("argv[%d]:%s\n",i,argv[i]);
#endif
        strcpy(param,argv[i]);
        len = strlen(argv[i]);
        param[len] = '\0';
        if(strcmp(param,"-d")==0){            
            debug = ON;
        }else if(len > 4){
            if (param[len-4]=='.' && 
            	((param[len-3]=='B' && param[len-2]=='I' && param[len-1]=='N') ||
        	 	 (param[len-3]=='b' && param[len-2]=='i' && param[len-1]=='n'))){
                if ((fp = fopen(param,"rb")) == NULL){
                    fprintf(stderr,"io error: open file %s failed\n",param);
                    exit(-1);
                }
                code_len = 0;
                p = (char *)ROM;
                fd = fileno(fp);
                do{
                    if ((n=read(fd,p,BLOCK_SIZE))<0){
                        fprintf(stderr,"io error: read file %s failed\n",param);
                        exit(-1);
                    }
                    if (n==0) break;
                    code_len += n;
                    p += n;
                }while(TRUE);
                if (ferror(fp)){
                    fprintf(stderr,"io error: read file %s error\n",param);
                    exit(-1);
                }
                fclose(fp);
            }        
        }    
    }    
}    

⌨️ 快捷键说明

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