1
0

TABの実装

This commit is contained in:
otya128
2015-08-30 13:41:52 +09:00
parent 4c45325f3e
commit 45c72df297
5 changed files with 75 additions and 19 deletions

View File

@@ -4,8 +4,9 @@ import otya.smilebasic.error;
import otya.smilebasic.vm;
class SystemVariable
{
VM vm;
@property
abstract Value value(VM vm);
abstract Value value();
@property
void value(Value value)
{
@@ -18,7 +19,7 @@ import std.conv;
class Date : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
auto currentTime = Clock.currTime();
wstring timeString = format("%04d/%02d/%02d", currentTime.year, currentTime.month, currentTime.day).to!wstring;
@@ -28,7 +29,7 @@ class Date : SystemVariable
class Time : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
auto currentTime = Clock.currTime();
wstring timeString = format("%02d:%02d:%02d", currentTime.hour, currentTime.minute, currentTime.second).to!wstring;
@@ -38,7 +39,7 @@ class Time : SystemVariable
class Maincnt : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(vm.petitcomputer.maincnt);
}
@@ -46,7 +47,7 @@ class Maincnt : SystemVariable
class CSRX : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(vm.petitcomputer.CSRX);
}
@@ -54,7 +55,7 @@ class CSRX : SystemVariable
class CSRY : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(vm.petitcomputer.CSRY);
}
@@ -62,15 +63,37 @@ class CSRY : SystemVariable
class CSRZ : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(vm.petitcomputer.CSRZ);
}
}
class TabStep : SystemVariable
{
@property
override Value value()
{
return Value(vm.petitcomputer.TABSTEP);
}
@property
override void value(Value value)
{
if(!value.isNumber)
{
throw new TypeMismatch();
}
int i = value.castInteger;
if(i < 0 || i > 16)
{
throw new OutOfRange();
}
vm.petitcomputer.TABSTEP = i;
}
}
class Version : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(0x3010000);
}
@@ -78,7 +101,7 @@ class Version : SystemVariable
class FreeMem : SystemVariable
{
@property
override Value value(VM vm)
override Value value()
{
return Value(8327164);
}