Annotation of nono/vm/rom.cpp, revision 1.1.1.3

1.1       root        1: //
                      2: // nono
1.1.1.3 ! root        3: // Copyright (C) 2020 nono project
        !             4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
                      7: #include "rom.h"
1.1.1.3 ! root        8: #include "mainapp.h"
        !             9: #include "mystring.h"
1.1       root       10: 
                     11: //
                     12: // ROM 共通部
                     13: //
                     14: // ROM はビッグエンディアンのままメモリに置かれるので、
                     15: // 必要ならアクセス時に都度変換すること。
                     16: //
                     17: 
                     18: ROMDevice::ROMDevice()
                     19: {
                     20:        logname = "rom";
                     21: 
                     22:        mask = 0xffffffff;
                     23: }
                     24: 
                     25: ROMDevice::~ROMDevice()
                     26: {
                     27: }
                     28: 
                     29: // name の ROM を探してロードする。
                     30: // name はパスを含まないファイル名のみ。パスはこちらで探す。
                     31: // mem は file をさす。
                     32: // 失敗した場合はエラーメッセージを表示して false を返す。
                     33: bool
                     34: ROMDevice::LoadROM(const char *name, int size)
                     35: {
1.1.1.3 ! root       36:        filename = gMainApp.SearchFile(name);
1.1       root       37:        if (filename.empty()) {
1.1.1.2   root       38:                warnx("%s not found", name);
1.1       root       39:                return false;
                     40:        }
                     41: 
                     42:        // オープン
1.1.1.3 ! root       43:        file.SetFilename(filename);
        !            44:        file.SetDispname(string_format("ROM \"%s\"", filename.c_str()));
        !            45:        mem = file.OpenRdOnly((off_t)size);
        !            46:        if (mem == NULL) {
1.1       root       47:                return false;
                     48:        }
                     49: 
                     50:        return true;
                     51: }
                     52: 
                     53: uint64
                     54: ROMDevice::Read8(uint32 addr)
                     55: {
                     56:        return mem[addr & mask];
                     57: }
                     58: 
                     59: uint64
                     60: ROMDevice::Read16(uint32 addr)
                     61: {
                     62:        uint16 data;
                     63:        data = *(uint16 *)&mem[addr & mask];
                     64:        return be16toh(data);
                     65: }
                     66: 
                     67: uint64
                     68: ROMDevice::Read32(uint32 addr)
                     69: {
                     70:        uint32 data;
                     71:        data = *(uint32 *)&mem[addr & mask];
                     72:        return be32toh(data);
                     73: }
                     74: 
                     75: uint64
                     76: ROMDevice::Write8(uint32 addr, uint32 data)
                     77: {
                     78:        return (uint64)-1;
                     79: }
                     80: 
                     81: uint64
                     82: ROMDevice::Write16(uint32 addr, uint32 data)
                     83: {
                     84:        return (uint64)-1;
                     85: }
                     86: 
                     87: uint64
                     88: ROMDevice::Write32(uint32 addr, uint32 data)
                     89: {
                     90:        return (uint64)-1;
                     91: }
                     92: 
                     93: uint64
                     94: ROMDevice::Peek8(uint32 addr)
                     95: {
                     96:        return mem[addr & mask];
                     97: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.