DREAMWEB: Pass data segment as SegmentRef to Context constructor

And not as SegmentPtr.
This commit is contained in:
Max Horn
2011-12-07 11:07:42 +01:00
parent a29869b313
commit 7b71bb6444
3 changed files with 19 additions and 11 deletions
+1 -1
View File
@@ -644,7 +644,7 @@ namespace %s {
"""
class %sContext : public DreamBase, public Context {
public:
DreamGenContext() : DreamBase(), Context(_realData) {}
DreamGenContext() : DreamBase(), Context(data) {}
void __start();
"""
+1 -1
View File
@@ -538,7 +538,7 @@ static const uint16 kLenofreelrouts = (983-526);
class DreamGenContext : public DreamBase, public Context {
public:
DreamGenContext() : DreamBase(), Context(_realData) {}
DreamGenContext() : DreamBase(), Context(data) {}
void __start();
#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
+17 -9
View File
@@ -151,15 +151,19 @@ public:
: _value(value), _segment(segment) {
}
inline operator uint16() const {
return _value;
}
SegmentPtr getSegmentPtr() const {
return _segment;
}
inline uint8 &byte(unsigned index) {
assert(_segment != 0);
return _segment->byte(index);
}
inline operator uint16() const {
return _value;
}
inline WordRef word(unsigned index) {
//debug(1, "getting word ref for %04x:%d", _value, index);
assert(_segment != 0);
@@ -194,6 +198,10 @@ public:
: _context(ctx), SegmentRef(value, segment) {
}
MutableSegmentRef(Context *ctx, SegmentRef seg)
: _context(ctx), SegmentRef(seg) {
}
inline MutableSegmentRef& operator=(const uint16 id);
};
@@ -255,12 +263,12 @@ public:
MutableSegmentRef es;
Flags flags;
Context(SegmentPtr realData): al(ax), ah(ax), bl(bx), bh(bx), cl(cx), ch(cx), dl(dx), dh(dx),
cs(kDefaultDataSegment, realData),
ds(this, kDefaultDataSegment, realData),
es(this, kDefaultDataSegment, realData) {
Context(SegmentRef data): al(ax), ah(ax), bl(bx), bh(bx), cl(cx), ch(cx), dl(dx), dh(dx),
cs(data),
ds(this, data),
es(this, data) {
_segments[kDefaultDataSegment] = realData;
_segments[kDefaultDataSegment] = data.getSegmentPtr();
}
SegmentRef getSegment(uint16 value) {