帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:AUTO  EXP  cod  COM  导出  
Automatically exported from code.google.com/p/virtualc64

  • 源代码名称:virtualc64
  • 源代码网址:http://www.github.com/dirkwhoffmann/virtualc64
  • virtualc64源代码文档
  • virtualc64源代码下载
  • Git URL:
    git://www.github.com/dirkwhoffmann/virtualc64.git
  • Git Clone代码到本地:
    git clone http://www.github.com/dirkwhoffmann/virtualc64
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/dirkwhoffmann/virtualc64
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • VirtualC64在苹果机上模拟 Commodore 64. 最初,模拟器 作为一个虚拟CPU环境的演示,可以在一年或者两年内使用计算机技术。 多年来,模拟器 不断发展,它的仿真精度不断提高。 虽然 模拟器 尚未达到令人印象深刻的兼容性,但VirtualC64已经发展成了一个完整的C64 模拟器。

    VirtualC64有三个目标,除了实现高级别的兼容性,我想创建一个用户界面尽可以能容易使用。 第三,我试图创建一个良好的。可以理解的。 如果你能确定这些目标,我将很乐意积极参与这个项目。 请注意,我现在不想将 模拟器 移植到另一个操作系统。

    VirtualC64是开源的,并在GNU通用 public 许可证下发布。

    Dirk Hoffmann,2018 。dirkwhoffmann。de/virtualc64

    源代码组织

    顶级目录结构

    C64: 包含核心 模拟器,用 C++ 编写。 代码的意思是架构独立。 OSX: 包含与 OS X 版本相关的所有内容。 GUI代码位于子目录MacGUI中

    的总体架构

    VirtualC64由三个主要组件组成:

    • 图形用户界面( 用 Swift 和ObjC编写)
    • 代理( 用ObjC编写)
    • 核心 模拟器 ( 用 C++ 编写)

    GUI通过调用代理方法与VirtualC64通信。 VirtualC64通过消息队列 talks,当消息被写入队列时触发回调函数。

    | callback() putMessage ( ) | v |

    | | func() | bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge bridge。

    初始化过程

    要使VirtualC64启动并运行,你需要执行以下步骤:

    创建C64对象 C64 = new C64( )

    register 一个侦听器回调 c64-> setListener (。"。"。)

    加载 rom c64-> loadRom (。)

    配置 c64-> 集。( ) 等。

    启动执行线程 c64-> 运行( )

    由于 loadRom() 不仅安装了必要的rom来运行 模拟器,所以它是一个重要功能,而且还触发了重要的。 一旦安装了最后一个 ROM,函数将READ_TO_RUN消息写入消息队列。 GUI通过调用 run() 响应这里消息。 这个函数启动执行线程并将 模拟器 带到生命中。

    消息队列

    为了与GUI进行通信,模拟器 将消息写入消息队列。 每次启动时,GUI都会调用一个回调函数,每当将新消息写入队列时,都会调用这个回调函数。 在当前实现中,注册了一个 Swift 闭包来处理所有传入消息。

    如果在不同环境中使用核心 模拟器 并且不希望 register 回调,则可以定期查询与下面的objective-c 示例代码相似的队列:

    ( ( 消息= [c64 message] )!= NULL ) { switch ( message-> id ) {

    
     case MSG_READY_TO_RUN:
    
    
     [c64 run];
    
    
    
    . . .
    
    
    }
    
    
    
    

    }

    你可以随时对监听器进行 register,甚至是对正在运行的模拟器。 在注册侦听器时,所有挂起的消息都会自动发送到已经注册的回调。

    执行线程

    执行线程被组织为无限循环。 在每次迭代中,控制被传递给 VIC。CIAs。CPU。VIAs和磁盘驱动器。 VIC芯片将屏幕内容绘制成一个简单的字节 array,所谓的屏幕缓冲区。 异步运行的GUI将屏幕缓冲区内容复制到一个GPU纹理上,然后由GPU进行渲染。

    下面的方法控制执行线程:

    运行:运行仿真线程

    当用户第一次访问或者点击 continue continue时,GUI调用这里方法,即 比如。

    暂停:暂停仿真线程

    当用户点击暂停按钮时,GUI调用这个方法 比如。 VirtualC64本身调用这里方法时,比如 到达一个断点。

    suspend/result: 临时暂停仿真线程

    如果需要以原子方式执行多个操作,操作将嵌入在挂起/resume ( ) 块内。 两种方法都在内部使用 halt() 和 run()。

    通电:

    这里方法在新初始化的计算机上重新启动仿真。 它和关闭一个真正的C64一样具有同样的效果。 请注意,在复位。比如。附加的卡盒期间保留几个项目。



    文章标签:COM  cod  EXP  AUTO  导出  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语