git-svn-id: svn://qnap.local/TwoTerm/trunk@1657 5590a31f-7b70-45f8-8c82-aa3a8e5f4507

This commit is contained in:
Kelvin Sherlock 2010-07-12 02:18:37 +00:00
parent 0594410e4f
commit e956569350
10 changed files with 1113 additions and 128 deletions

View File

@ -34,7 +34,7 @@
B676069511DEC97D00D6B66C /* TermWindowController.m:97 */,
B67606B011DECD4E00D6B66C /* TermWindowController.m:97 */,
B676070811DF8F4100D6B66C /* TermWindowController.m:97 */,
B65FA27911E29E8D00EB447E /* EmulatorView.mm:93 */,
B65FA27911E29E8D00EB447E /* EmulatorView.mm:121 */,
B649E13D11E2BC7A0061921F /* VT52View.mm:460 */,
B649E15211E2BF130061921F /* VT52View.mm:107 */,
B649E17111E2C3C50061921F /* VT52View.mm:598 */,
@ -46,10 +46,13 @@
B66979AB11E6A8B4002ED475 /* VT52.mm:278 */,
B66979AE11E6A8C5002ED475 /* VT52.mm:272 */,
B66979B111E6A8D0002ED475 /* VT52.mm:240 */,
B66979E511E6BD8B002ED475 /* EmulatorView.mm:35 */,
B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:55 */,
B66979E511E6BD8B002ED475 /* EmulatorView.mm:48 */,
B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:68 */,
B60EBE0511E916BD00C1974F /* ScanLineFilter.m:23 */,
B60EBE0711E916C000C1974F /* ScanLineFilter.m:24 */,
B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:262 */,
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:482 */,
B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:464 */,
);
codeSenseManager = B676054911DADB9100D6B66C /* Code sense */;
executables = (
@ -152,8 +155,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 300554910;
PBXWorkspaceStateSaveDate = 300554910;
PBXPerProjectTemplateStateSaveDate = 300591260;
PBXWorkspaceStateSaveDate = 300591260;
};
perUserProjectItems = {
B602375711E94C2900C0B73E = B602375711E94C2900C0B73E /* PBXTextBookmark */;
@ -166,9 +169,21 @@
B60EBE6211E91C5900C1974F = B60EBE6211E91C5900C1974F /* PBXTextBookmark */;
B60EBE6311E91C5900C1974F = B60EBE6311E91C5900C1974F /* PBXTextBookmark */;
B60EBE6711E91E1E00C1974F = B60EBE6711E91E1E00C1974F /* PBXTextBookmark */;
B641C82311EA1B1600B6359F /* PBXTextBookmark */ = B641C82311EA1B1600B6359F /* PBXTextBookmark */;
B641C82411EA1B1600B6359F /* XCBuildMessageTextBookmark */ = B641C82411EA1B1600B6359F /* XCBuildMessageTextBookmark */;
B641C82511EA1B1600B6359F /* PBXTextBookmark */ = B641C82511EA1B1600B6359F /* PBXTextBookmark */;
B641C82311EA1B1600B6359F = B641C82311EA1B1600B6359F /* PBXTextBookmark */;
B641C82411EA1B1600B6359F = B641C82411EA1B1600B6359F /* PBXTextBookmark */;
B641C82511EA1B1600B6359F = B641C82511EA1B1600B6359F /* PBXTextBookmark */;
B641C83611EA1C2A00B6359F = B641C83611EA1C2A00B6359F /* PBXTextBookmark */;
B641C83A11EA1C4A00B6359F = B641C83A11EA1C4A00B6359F /* PBXTextBookmark */;
B641C85F11EA745400B6359F = B641C85F11EA745400B6359F /* PBXTextBookmark */;
B641C86011EA745400B6359F = B641C86011EA745400B6359F /* PBXTextBookmark */;
B641C86111EA745400B6359F = B641C86111EA745400B6359F /* PBXTextBookmark */;
B641C86511EA747000B6359F = B641C86511EA747000B6359F /* PBXTextBookmark */;
B641C86E11EA750400B6359F = B641C86E11EA750400B6359F /* PBXTextBookmark */;
B641C88811EA8DCC00B6359F = B641C88811EA8DCC00B6359F /* PBXTextBookmark */;
B641C88911EA8DCC00B6359F = B641C88911EA8DCC00B6359F /* PBXTextBookmark */;
B641C88A11EA8DCC00B6359F = B641C88A11EA8DCC00B6359F /* PBXTextBookmark */;
B641C89911EA8F5300B6359F = B641C89911EA8F5300B6359F /* PBXTextBookmark */;
B641C89D11EA8F8000B6359F = B641C89D11EA8F8000B6359F /* PBXTextBookmark */;
B649E0B511E2A88D0061921F = B649E0B511E2A88D0061921F /* PBXTextBookmark */;
B65FA28111E29EDE00EB447E = B65FA28111E29EDE00EB447E /* PBXTextBookmark */;
B65FA2FE11E2A5D200EB447E = B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */;
@ -196,6 +211,38 @@
B699A0BE11E58D3B00F54CC8 = B699A0BE11E58D3B00F54CC8 /* PBXTextBookmark */;
B699A0C011E58D3B00F54CC8 = B699A0C011E58D3B00F54CC8 /* PBXTextBookmark */;
B699A0C211E58D3B00F54CC8 = B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */;
B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */;
B6E6A7BE11EAA92100A24C0C /* PBXTextBookmark */ = B6E6A7BE11EAA92100A24C0C /* PBXTextBookmark */;
B6E6A7BF11EAA92100A24C0C /* PBXTextBookmark */ = B6E6A7BF11EAA92100A24C0C /* PBXTextBookmark */;
B6E6A7C011EAA92400A24C0C /* PBXTextBookmark */ = B6E6A7C011EAA92400A24C0C /* PBXTextBookmark */;
B6E6A7CF11EAA9E500A24C0C /* PBXTextBookmark */ = B6E6A7CF11EAA9E500A24C0C /* PBXTextBookmark */;
B6E6A7D111EAAA8300A24C0C /* PBXTextBookmark */ = B6E6A7D111EAAA8300A24C0C /* PBXTextBookmark */;
B6E6A7D211EAAA8300A24C0C /* PBXTextBookmark */ = B6E6A7D211EAAA8300A24C0C /* PBXTextBookmark */;
B6E6A7D311EAAA8300A24C0C /* PBXTextBookmark */ = B6E6A7D311EAAA8300A24C0C /* PBXTextBookmark */;
B6E6A7D911EAAB0100A24C0C /* PBXTextBookmark */ = B6E6A7D911EAAB0100A24C0C /* PBXTextBookmark */;
B6E6A7DA11EAAB0100A24C0C /* PBXTextBookmark */ = B6E6A7DA11EAAB0100A24C0C /* PBXTextBookmark */;
B6E6A7DB11EAAB0200A24C0C /* PBXTextBookmark */ = B6E6A7DB11EAAB0200A24C0C /* PBXTextBookmark */;
B6E6A7E011EAAB4100A24C0C /* PBXTextBookmark */ = B6E6A7E011EAAB4100A24C0C /* PBXTextBookmark */;
B6E6A7E311EAAB4500A24C0C /* PBXTextBookmark */ = B6E6A7E311EAAB4500A24C0C /* PBXTextBookmark */;
B6E6A7E711EAABF700A24C0C /* PBXTextBookmark */ = B6E6A7E711EAABF700A24C0C /* PBXTextBookmark */;
B6E6A7E911EAAC0400A24C0C /* PBXTextBookmark */ = B6E6A7E911EAAC0400A24C0C /* PBXTextBookmark */;
B6E6A7EA11EAAD0100A24C0C /* PBXTextBookmark */ = B6E6A7EA11EAAD0100A24C0C /* PBXTextBookmark */;
B6E6A7ED11EAAE1200A24C0C /* PBXTextBookmark */ = B6E6A7ED11EAAE1200A24C0C /* PBXTextBookmark */;
B6E6A7F111EAAE5000A24C0C /* PBXTextBookmark */ = B6E6A7F111EAAE5000A24C0C /* PBXTextBookmark */;
B6E6A7F511EAAE9000A24C0C /* PBXTextBookmark */ = B6E6A7F511EAAE9000A24C0C /* PBXTextBookmark */;
B6E6A7FB11EAAF4200A24C0C /* PBXTextBookmark */ = B6E6A7FB11EAAF4200A24C0C /* PBXTextBookmark */;
B6E6A7FD11EAAF5B00A24C0C /* PBXTextBookmark */ = B6E6A7FD11EAAF5B00A24C0C /* PBXTextBookmark */;
B6E6A7FE11EAB10800A24C0C /* PBXTextBookmark */ = B6E6A7FE11EAB10800A24C0C /* PBXTextBookmark */;
B6E6A7FF11EAB10800A24C0C /* PBXTextBookmark */ = B6E6A7FF11EAB10800A24C0C /* PBXTextBookmark */;
B6E6A80011EAB10800A24C0C /* PBXTextBookmark */ = B6E6A80011EAB10800A24C0C /* PBXTextBookmark */;
B6E6A80111EAB10800A24C0C /* PBXTextBookmark */ = B6E6A80111EAB10800A24C0C /* PBXTextBookmark */;
B6E6A80511EAB12B00A24C0C /* PBXTextBookmark */ = B6E6A80511EAB12B00A24C0C /* PBXTextBookmark */;
B6E6A80611EAB12B00A24C0C /* PBXTextBookmark */ = B6E6A80611EAB12B00A24C0C /* PBXTextBookmark */;
B6E6A80711EAB12B00A24C0C /* PBXTextBookmark */ = B6E6A80711EAB12B00A24C0C /* PBXTextBookmark */;
B6E6A80811EAB12B00A24C0C /* PBXTextBookmark */ = B6E6A80811EAB12B00A24C0C /* PBXTextBookmark */;
B6E6A80C11EAB13100A24C0C /* PBXTextBookmark */ = B6E6A80C11EAB13100A24C0C /* PBXTextBookmark */;
B6E6A80D11EAB13600A24C0C /* PBXTextBookmark */ = B6E6A80D11EAB13600A24C0C /* PBXTextBookmark */;
B6E6A81111EAB37500A24C0C /* PBXTextBookmark */ = B6E6A81111EAB37500A24C0C /* PBXTextBookmark */;
};
sourceControlManager = B676054811DADB9100D6B66C /* Source Control */;
userBuildSettings = {
@ -224,6 +271,13 @@
vrLen = 773;
vrLoc = 6154;
};
B602376111E94D9800C0B73E /* iGeometry.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {780, 995}}";
sepNavSelRange = "{420, 0}";
sepNavVisRange = "{0, 760}";
};
};
B60EBCED11E7F6BE00C1974F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
@ -234,7 +288,7 @@
vrLen = 946;
vrLoc = 454;
};
B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:55 */ = {
B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:68 */ = {
isa = PBXFileBreakpoint;
actions = (
);
@ -246,9 +300,9 @@
functionName = "-awakeFromNib";
hitCount = 0;
ignoreCount = 0;
lineNumber = 55;
lineNumber = 68;
location = 2Term;
modificationTime = 300555018.859059;
modificationTime = 300594036.604845;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -268,8 +322,8 @@
};
B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 389}}";
sepNavSelRange = "{396, 0}";
sepNavIntBoundsRect = "{{0, 0}, {653, 369}}";
sepNavSelRange = "{231, 0}";
sepNavVisRange = "{0, 396}";
};
};
@ -278,7 +332,7 @@
fRef = B67606D811DF6DAB00D6B66C /* EmulatorView.h */;
name = "EmulatorView.h: 48";
rLen = 0;
rLoc = 721;
rLoc = 1146;
rType = 0;
vrLen = 558;
vrLoc = 391;
@ -317,7 +371,7 @@
ignoreCount = 0;
lineNumber = 23;
location = 2Term;
modificationTime = 300555018.859328;
modificationTime = 300594036.604987;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -335,7 +389,7 @@
ignoreCount = 0;
lineNumber = 24;
location = 2Term;
modificationTime = 300555018.859525;
modificationTime = 300594036.605122;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -344,7 +398,7 @@
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 61";
rLen = 0;
rLoc = 1180;
rLoc = 1343;
rType = 0;
vrLen = 919;
vrLoc = 6572;
@ -397,13 +451,12 @@
vrLen = 399;
vrLoc = 0;
};
B641C82411EA1B1600B6359F /* XCBuildMessageTextBookmark */ = {
B641C82411EA1B1600B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "'struct iSize' has no member named 'x'";
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
fallbackIsa = XCBuildMessageTextBookmark;
rLen = 1;
rLoc = 325;
rLoc = 372;
rType = 1;
};
B641C82511EA1B1600B6359F /* PBXTextBookmark */ = {
@ -411,17 +464,135 @@
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 326";
rLen = 0;
rLoc = 7364;
rLoc = 8624;
rType = 0;
vrLen = 741;
vrLoc = 7021;
};
B641C83611EA1C2A00B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 326";
rLen = 0;
rLoc = 8624;
rType = 0;
vrLen = 741;
vrLoc = 7021;
};
B641C83A11EA1C4A00B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 326";
rLen = 0;
rLoc = 8624;
rType = 0;
vrLen = 741;
vrLoc = 7021;
};
B641C85F11EA745400B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 326";
rLen = 0;
rLoc = 8624;
rType = 0;
vrLen = 741;
vrLoc = 7021;
};
B641C86011EA745400B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */;
name = "ScanLineFilter.cikernel: 20";
rLen = 0;
rLoc = 396;
rType = 0;
vrLen = 396;
vrLoc = 0;
};
B641C86111EA745400B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */;
name = "ScanLineFilter.cikernel: 12";
rLen = 0;
rLoc = 231;
rType = 0;
vrLen = 396;
vrLoc = 0;
};
B641C86511EA747000B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */;
name = "ScanLineFilter.cikernel: 12";
rLen = 0;
rLoc = 231;
rType = 0;
vrLen = 396;
vrLoc = 0;
};
B641C86E11EA750400B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */;
name = "ScanLineFilter.cikernel: 12";
rLen = 0;
rLoc = 231;
rType = 0;
vrLen = 396;
vrLoc = 0;
};
B641C88811EA8DCC00B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B60EBDE711E9143F00C1974F /* ScanLineFilter.cikernel */;
name = "ScanLineFilter.cikernel: 12";
rLen = 0;
rLoc = 231;
rType = 0;
vrLen = 396;
vrLoc = 0;
};
B641C88911EA8DCC00B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
comments = "'_cursor' was not declared in this scope";
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
rLen = 1;
rLoc = 260;
rType = 1;
};
B641C88A11EA8DCC00B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 237";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 470;
vrLoc = 5521;
};
B641C89911EA8F5300B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 557;
vrLoc = 5506;
};
B641C89D11EA8F8000B6359F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 557;
vrLoc = 5505;
};
B649E0B511E2A88D0061921F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */;
name = "CharacterGenerator.m: 1276";
rLen = 0;
rLoc = 23463;
rLoc = 26470;
rType = 0;
vrLen = 635;
vrLoc = 828;
@ -440,7 +611,7 @@
ignoreCount = 0;
lineNumber = 460;
location = 2Term;
modificationTime = 300555018.856882;
modificationTime = 300594036.60333;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -458,7 +629,7 @@
ignoreCount = 0;
lineNumber = 107;
location = 2Term;
modificationTime = 300555018.857066;
modificationTime = 300594036.603459;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -476,7 +647,7 @@
ignoreCount = 0;
lineNumber = 598;
location = 2Term;
modificationTime = 300555018.857268;
modificationTime = 300594036.603579;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -494,7 +665,7 @@
ignoreCount = 0;
lineNumber = 607;
location = 2Term;
modificationTime = 300555018.857428;
modificationTime = 300594036.603705;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -512,7 +683,7 @@
ignoreCount = 0;
lineNumber = 170;
location = 2Term;
modificationTime = 300555018.857585;
modificationTime = 300594036.603842;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -530,11 +701,11 @@
ignoreCount = 0;
lineNumber = 113;
location = 2Term;
modificationTime = 300555018.857761;
modificationTime = 300594036.603962;
originalNumberOfMultipleMatches = 1;
state = 2;
};
B65FA27911E29E8D00EB447E /* EmulatorView.mm:93 */ = {
B65FA27911E29E8D00EB447E /* EmulatorView.mm:121 */ = {
isa = PBXFileBreakpoint;
actions = (
);
@ -546,9 +717,9 @@
functionName = "-drawRect:";
hitCount = 0;
ignoreCount = 0;
lineNumber = 93;
lineNumber = 121;
location = 2Term;
modificationTime = 300555018.856565;
modificationTime = 300594036.603199;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -584,7 +755,7 @@
fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */;
name = "iGeometry.h: 55";
rLen = 0;
rLoc = 1066;
rLoc = 1745;
rType = 0;
vrLen = 577;
vrLoc = 406;
@ -627,7 +798,7 @@
ignoreCount = 0;
lineNumber = 184;
location = 2Term;
modificationTime = 300555018.857943;
modificationTime = 300594036.60408;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -645,7 +816,7 @@
ignoreCount = 0;
lineNumber = 183;
location = 2Term;
modificationTime = 300555018.858106;
modificationTime = 300594036.604205;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -663,7 +834,7 @@
ignoreCount = 0;
lineNumber = 278;
location = 2Term;
modificationTime = 300555018.858284;
modificationTime = 300594036.604321;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -681,7 +852,7 @@
ignoreCount = 0;
lineNumber = 272;
location = 2Term;
modificationTime = 300555018.85845;
modificationTime = 300594036.604451;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -699,7 +870,7 @@
ignoreCount = 0;
lineNumber = 240;
location = 2Term;
modificationTime = 300555018.858617;
modificationTime = 300594036.604589;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -720,7 +891,7 @@
path = /Users/kelvin/Projects/2Term/images/sl25.png;
sourceTree = "<absolute>";
};
B66979E511E6BD8B002ED475 /* EmulatorView.mm:35 */ = {
B66979E511E6BD8B002ED475 /* EmulatorView.mm:48 */ = {
isa = PBXFileBreakpoint;
actions = (
);
@ -732,9 +903,9 @@
functionName = "-awakeFromNib";
hitCount = 0;
ignoreCount = 0;
lineNumber = 35;
lineNumber = 48;
location = 2Term;
modificationTime = 300555018.858791;
modificationTime = 300594036.604729;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -775,9 +946,9 @@
};
B6697A3C11E7CCA0002ED475 /* PTSE.mm */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 3939}}";
sepNavSelRange = "{6823, 0}";
sepNavVisRange = "{0, 399}";
sepNavIntBoundsRect = "{{0, 0}, {780, 3562}}";
sepNavSelRange = "{4983, 0}";
sepNavVisRange = "{3257, 2868}";
};
};
B6697A5211E7E072002ED475 /* PBXTextBookmark */ = {
@ -1019,7 +1190,7 @@
ignoreCount = 0;
lineNumber = 34;
location = 2Term;
modificationTime = 300555018.855333;
modificationTime = 300594036.602459;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -1037,7 +1208,7 @@
ignoreCount = 0;
lineNumber = 31;
location = 2Term;
modificationTime = 300555018.855899;
modificationTime = 300594036.602732;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -1055,7 +1226,7 @@
ignoreCount = 0;
lineNumber = 97;
location = 2Term;
modificationTime = 300555018.856067;
modificationTime = 300594036.602852;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -1073,7 +1244,7 @@
ignoreCount = 0;
lineNumber = 97;
location = 2Term;
modificationTime = 300555018.856226;
modificationTime = 300594036.602974;
originalNumberOfMultipleMatches = 1;
state = 2;
};
@ -1104,16 +1275,16 @@
};
B67606D811DF6DAB00D6B66C /* EmulatorView.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {780, 1018}}";
sepNavSelRange = "{873, 0}";
sepNavVisRange = "{0, 966}";
sepNavIntBoundsRect = "{{0, 0}, {1167, 1131}}";
sepNavSelRange = "{1335, 38}";
sepNavVisRange = "{142, 1317}";
};
};
B67606D911DF6DAB00D6B66C /* EmulatorView.mm */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 4459}}";
sepNavSelRange = "{7364, 0}";
sepNavVisRange = "{7021, 741}";
sepNavIntBoundsRect = "{{0, 0}, {1167, 6526}}";
sepNavSelRange = "{10289, 0}";
sepNavVisRange = "{9876, 1273}";
};
};
B676070811DF8F4100D6B66C /* TermWindowController.m:97 */ = {
@ -1130,29 +1301,29 @@
ignoreCount = 0;
lineNumber = 97;
location = 2Term;
modificationTime = 300555018.856391;
modificationTime = 300594036.603084;
originalNumberOfMultipleMatches = 1;
state = 0;
};
B699A02E11E528BC00F54CC8 /* Screen.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 2119}}";
sepNavSelRange = "{304, 0}";
sepNavVisRange = "{454, 946}";
sepNavIntBoundsRect = "{{0, 0}, {653, 2509}}";
sepNavSelRange = "{3207, 0}";
sepNavVisRange = "{2867, 423}";
};
};
B699A02F11E528BC00F54CC8 /* Screen.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {685, 3198}}";
sepNavSelRange = "{958, 0}";
sepNavVisRange = "{0, 1368}";
sepNavIntBoundsRect = "{{0, 0}, {747, 3627}}";
sepNavSelRange = "{5637, 0}";
sepNavVisRange = "{4873, 647}";
};
};
B699A03211E528DE00F54CC8 /* iGeometry.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 715}}";
sepNavSelRange = "{983, 0}";
sepNavVisRange = "{406, 577}";
sepNavIntBoundsRect = "{{0, 0}, {712, 1053}}";
sepNavSelRange = "{1745, 0}";
sepNavVisRange = "{278, 767}";
};
};
B699A05B11E54D4500F54CC8 /* OutputChannel.h */ = {
@ -1205,7 +1376,7 @@
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 160";
rLen = 0;
rLoc = 3619;
rLoc = 3797;
rType = 0;
vrLen = 881;
vrLoc = 2845;
@ -1220,6 +1391,370 @@
vrLen = 177;
vrLoc = 0;
};
B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */;
name = "iGeometry.h: 78";
rLen = 0;
rLoc = 1745;
rType = 0;
vrLen = 767;
vrLoc = 278;
};
B6E6A7BE11EAA92100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 583;
vrLoc = 5504;
};
B6E6A7BF11EAA92100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 557;
vrLoc = 5505;
};
B6E6A7C011EAA92400A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 557;
vrLoc = 5505;
};
B6E6A7CF11EAA9E500A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 799;
vrLoc = 5113;
};
B6E6A7D111EAAA8300A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 312;
vrLoc = 5750;
};
B6E6A7D211EAAA8300A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
rLen = 0;
rLoc = 178;
rType = 1;
};
B6E6A7D311EAAA8300A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 302;
vrLoc = 2988;
};
B6E6A7D911EAAB0100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 245";
rLen = 0;
rLoc = 6276;
rType = 0;
vrLen = 804;
vrLoc = 5113;
};
B6E6A7DA11EAAB0100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7DB11EAAB0200A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:262 */ = {
isa = PBXFileBreakpoint;
actions = (
);
breakpointStyle = 0;
continueAfterActions = 0;
countType = 0;
delayBeforeContinue = 0;
fileReference = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
functionName = "Screen::setSize(unsigned width, unsigned height)";
hitCount = 0;
ignoreCount = 0;
lineNumber = 262;
location = 2Term;
modificationTime = 300594036.605247;
originalNumberOfMultipleMatches = 1;
state = 2;
};
B6E6A7E011EAAB4100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7E311EAAB4500A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7E711EAABF700A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7E911EAAC0400A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7EA11EAAD0100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7ED11EAAE1200A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7F111EAAE5000A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7F511EAAE9000A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:482 */ = {
isa = PBXFileBreakpoint;
actions = (
);
breakpointStyle = 0;
continueAfterActions = 0;
countType = 0;
delayBeforeContinue = 0;
fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
functionName = "ViewScreen::setSize(unsigned width, unsigned height, bool resizeView)";
hitCount = 0;
ignoreCount = 0;
lineNumber = 482;
location = 2Term;
modificationTime = 300594036.605632;
originalNumberOfMultipleMatches = 1;
state = 2;
};
B6E6A7FB11EAAF4200A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7FD11EAAF5B00A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A7FE11EAB10800A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 174";
rLen = 0;
rLoc = 3109;
rType = 0;
vrLen = 303;
vrLoc = 2987;
};
B6E6A7FF11EAB10800A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 272";
rLen = 0;
rLoc = 5594;
rType = 0;
vrLen = 412;
vrLoc = 4930;
};
B6E6A80011EAB10800A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
rLen = 0;
rLoc = 481;
rType = 1;
};
B6E6A80111EAB10800A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 481";
rLen = 0;
rLoc = 10991;
rType = 0;
vrLen = 407;
vrLoc = 10671;
};
B6E6A80511EAB12B00A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
name = "Screen.h: 177";
rLen = 0;
rLoc = 3207;
rType = 0;
vrLen = 423;
vrLoc = 2867;
};
B6E6A80611EAB12B00A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
name = "EmulatorView.mm: 481";
rLen = 0;
rLoc = 10991;
rType = 0;
vrLen = 472;
vrLoc = 10663;
};
B6E6A80711EAB12B00A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
rLen = 7;
rLoc = 5637;
rType = 0;
};
B6E6A80811EAB12B00A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 274";
rLen = 0;
rLoc = 5637;
rType = 0;
vrLen = 646;
vrLoc = 4873;
};
B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:464 */ = {
isa = PBXFileBreakpoint;
actions = (
);
breakpointStyle = 0;
continueAfterActions = 0;
countType = 0;
delayBeforeContinue = 0;
fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
hitCount = 0;
ignoreCount = 0;
lineNumber = 464;
location = 2Term;
modificationTime = 300594036.605791;
originalNumberOfMultipleMatches = 1;
state = 2;
};
B6E6A80C11EAB13100A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 274";
rLen = 0;
rLoc = 5637;
rType = 0;
vrLen = 646;
vrLoc = 4873;
};
B6E6A80D11EAB13600A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 274";
rLen = 0;
rLoc = 5637;
rType = 0;
vrLen = 646;
vrLoc = 4873;
};
B6E6A81111EAB37500A24C0C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
name = "Screen.cpp: 281";
rLen = 0;
rLoc = 5637;
rType = 0;
vrLen = 647;
vrLoc = 4873;
};
B6EBE2B311E0EA9100EA0458 /* CharacterGenerator.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {653, 468}}";
@ -1229,9 +1764,9 @@
};
B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1249, 17602}}";
sepNavSelRange = "{23301, 0}";
sepNavVisRange = "{22129, 1885}";
sepNavIntBoundsRect = "{{0, 0}, {566, 19942}}";
sepNavSelRange = "{22042, 0}";
sepNavVisRange = "{21518, 1472}";
};
};
B6F444C611E41AC000C3A836 /* VT05.h */ = {

View File

@ -231,6 +231,8 @@
<key>Layout</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@ -267,6 +269,8 @@
<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
<array>
<string>29B97314FDCFA39411CA2CEA</string>
<string>B6697A3911E7CC66002ED475</string>
<string>B6697A3A11E7CC80002ED475</string>
<string>080E96DDFE201D6D7F000001</string>
<string>29B97315FDCFA39411CA2CEA</string>
<string>29B97317FDCFA39411CA2CEA</string>
@ -283,7 +287,9 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>44</integer>
<integer>5</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
@ -304,7 +310,7 @@
<real>324</real>
</array>
<key>RubberWindowFrame</key>
<string>534 89 1060 902 0 0 1920 1178 </string>
<string>679 165 1060 902 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -320,7 +326,7 @@
<key>PBXProjectModuleGUID</key>
<string>B676054211DADB9000D6B66C</string>
<key>PBXProjectModuleLabel</key>
<string>EmulatorView.mm</string>
<string>Screen.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -328,11 +334,11 @@
<key>PBXProjectModuleGUID</key>
<string>B676054311DADB9000D6B66C</string>
<key>PBXProjectModuleLabel</key>
<string>EmulatorView.mm</string>
<string>Screen.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>B641C82511EA1B1600B6359F</string>
<string>B6E6A81111EAB37500A24C0C</string>
<key>history</key>
<array>
<string>B676058811DAE21100D6B66C</string>
@ -346,9 +352,7 @@
<string>B65FA2FE11E2A5D200EB447E</string>
<string>B649E0B511E2A88D0061921F</string>
<string>B699A0BE11E58D3B00F54CC8</string>
<string>B699A0C011E58D3B00F54CC8</string>
<string>B699A0C211E58D3B00F54CC8</string>
<string>B669796311E6A606002ED475</string>
<string>B669797711E6A6CE002ED475</string>
<string>B66979BD11E6ACB9002ED475</string>
<string>B6697A1B11E6C28A002ED475</string>
@ -361,14 +365,14 @@
<string>B6697A5811E7E072002ED475</string>
<string>B6697A5911E7E072002ED475</string>
<string>B6697A5A11E7E072002ED475</string>
<string>B60EBCED11E7F6BE00C1974F</string>
<string>B60EBDFA11E916AE00C1974F</string>
<string>B60EBDFB11E916AE00C1974F</string>
<string>B60EBDFC11E916AE00C1974F</string>
<string>B60EBE3311E918EC00C1974F</string>
<string>B60EBE6211E91C5900C1974F</string>
<string>B641C82311EA1B1600B6359F</string>
<string>B641C82411EA1B1600B6359F</string>
<string>B641C88811EA8DCC00B6359F</string>
<string>B6E6A7BD11EAA92100A24C0C</string>
<string>B6E6A80511EAB12B00A24C0C</string>
<string>B6E6A80711EAB12B00A24C0C</string>
</array>
</dict>
<key>SplitCount</key>
@ -382,18 +386,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {714, 424}}</string>
<string>{{0, 0}, {714, 413}}</string>
<key>RubberWindowFrame</key>
<string>534 89 1060 902 0 0 1920 1178 </string>
<string>679 165 1060 902 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>424pt</string>
<string>413pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>432pt</string>
<string>443pt</string>
<key>Tabs</key>
<array>
<dict>
@ -407,7 +411,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {714, 405}}</string>
<string>{{10, 27}, {714, 416}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -423,7 +427,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 31}, {603, 297}}</string>
<string>{{10, 27}, {714, 416}}</string>
<key>RubberWindowFrame</key>
<string>679 165 1060 902 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
@ -483,8 +489,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {714, 405}}</string>
<key>RubberWindowFrame</key>
<string>534 89 1060 902 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -512,11 +516,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>B641C82611EA1B1600B6359F</string>
<string>B6E6A7C111EAA92400A24C0C</string>
<string>1CA23ED40692098700951B8B</string>
<string>B641C82711EA1B1600B6359F</string>
<string>B6E6A7C211EAA92400A24C0C</string>
<string>B676054211DADB9000D6B66C</string>
<string>B641C82811EA1B1600B6359F</string>
<string>B6E6A7C311EAA92400A24C0C</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -665,14 +669,14 @@
</array>
<key>TableOfContents</key>
<array>
<string>B641C82911EA1B1600B6359F</string>
<string>B6E6A7C411EAA92400A24C0C</string>
<string>1CCC7628064C1048000F2A68</string>
<string>1CCC7629064C1048000F2A68</string>
<string>B641C82A11EA1B1600B6359F</string>
<string>B641C82B11EA1B1600B6359F</string>
<string>B641C82C11EA1B1600B6359F</string>
<string>B641C82D11EA1B1600B6359F</string>
<string>B641C82E11EA1B1600B6359F</string>
<string>B6E6A7C511EAA92400A24C0C</string>
<string>B6E6A7C611EAA92400A24C0C</string>
<string>B6E6A7C711EAA92400A24C0C</string>
<string>B6E6A7C811EAA92400A24C0C</string>
<string>B676054211DADB9000D6B66C</string>
</array>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
@ -706,14 +710,14 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>B641C82F11EA1B1600B6359F</string>
<string>B641C83011EA1B1600B6359F</string>
<string>B641C83111EA1B1600B6359F</string>
<string>B641C83211EA1B1600B6359F</string>
<string>B6E6A81211EAB37500A24C0C</string>
<string>B6E6A7CA11EAA92400A24C0C</string>
<string>B6E6A7CB11EAA92400A24C0C</string>
<string>/Users/kelvin/Projects/2Term/2Term.xcodeproj</string>
<string>B6E6A7DD11EAAB0200A24C0C</string>
</array>
<key>WindowString</key>
<string>534 89 1060 902 0 0 1920 1178 </string>
<string>679 165 1060 902 0 0 1920 1178 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View File

@ -1157,15 +1157,176 @@ static uint16_t mousetext[] = {
0b1111111111110000,
0b1111111111110000,
// O
0b1111000011000000,
0b0000001111000000,
0b0000111111000000,
0b0011111111111100,
0b0000111111000000,
0b0000001111000000,
0b0000000011000000,
0b1111111100111000,
// P
0b0000110000111100,
0b0000111100000000,
0b0000111111000000,
0b1111111111110000,
0b0000111111000000,
0b0000111100000000,
0b0000110000000000,
0b1111001111111100,
// Q
0b0000000000001100,
0b0000001100001100,
0b0000001100000000,
0b1111111111111100,
0b0011111111110000,
0b0000111111000000,
0b0000001100001100,
0b0000000000001100,
// R
0b0000000000001100,
0b0000001100001100,
0b0000111111000000,
0b0011111111110000,
0b1111111111111100,
0b0000001100000000,
0b0000001100001100,
0b0000000000001100,
// S
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1111111111111100,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
// T
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1111111111111100,
// U
0b0000001100000000,
0b0000000011000000,
0b0000000000110000,
0b1111111111111100,
0b0000000000110000,
0b0000000011000000,
0b0000001100000000,
0b0000000000000000,
// V
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
// W
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
0b1100110011001100,
0b0011001100110000,
// X - folder 1
0b0000000000000000,
0b0011111111110000,
0b1100000000001100,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1111111111111100,
0b0000000000000000,
// Y - folder 2
0b0000000000000000,
0b0000000000000000,
0b1111111111110000,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b1111111111111100,
0b0000000000000000,
// Z
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000000000001100,
0b0000001100000000,
0b0000111111000000,
0b0011111111110000,
0b1111111111111100,
0b0011111111110000,
0b0000111111000000,
0b0000001100000000,
0b0000000000000000,
0b1111111111111100,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b0000000000000000,
0b1111111111111100,
0b0000110011000000,
0b0000110011000000,
0b1111110011111100,
0b0000000000000000,
0b0000000000000000,
0b1111110011111100,
0b0000110011000000,
0b0000110011000000,
0b0000000000000000,
0b1111111111111100,
0b0000000000001100,
0b0000000000001100,
0b0000111100001100,
0b0000111100001100,
0b0000000000001100,
0b0000000000001100,
0b1111111111111100,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
0b1100000000000000,
};

View File

@ -16,6 +16,23 @@
#include "Screen.h"
@class EmulatorView;
class ViewScreen: public Screen
{
public:
virtual void setSize(unsigned width, unsigned height);
void setSize(unsigned width, unsigned height, bool resizeView);
void setView(EmulatorView *view) { _view = view; }
void setFD(int fd) { _fd = fd; }
private:
EmulatorView *_view;
int _fd;
};
#endif
@ -44,10 +61,13 @@
CGFloat _paddingLeft;
CGFloat _paddingRight;
NSImage *_cursorImg;
NSTimer *_cursorTimer;
BOOL _cursorOn;
#ifdef __cplusplus
Screen _screen;
ViewScreen _screen;
#endif
}
@ -56,6 +76,10 @@
-(void)dataAvailable;
-(void)invalidateIRect: (iRect)rect;
-(void)resizeTo: (iSize)size;
-(void)cursorTimer: (NSTimer *)timer;
@property (nonatomic, assign) int fd;
//@property (nonatomic, assign) iPoint cursor;

View File

@ -6,7 +6,9 @@
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#include <QuartzCore/QuartzCore.h>
#import <QuartzCore/QuartzCore.h>
#include <termios.h>
#include <sys/ioctl.h>
#import "EmulatorView.h"
@ -23,6 +25,17 @@
@synthesize fd = _fd;
#pragma mark -
#pragma mark properties
-(void)setFd: (int)fd
{
_fd = fd;
_screen.setFD(fd);
}
#pragma mark -
-(void)awakeFromNib
{
CIFilter *filter;
@ -60,10 +73,15 @@
[self setContentFilters: filters];
_screen.setFD(_fd);
_screen.setView(self);
_charGen = [[CharacterGenerator generator] retain];
_cursorImg = [[_charGen imageForCharacter: '_'] retain];
_emulator = [VT52 new];
}
-(BOOL)isFlipped
@ -75,6 +93,16 @@
-(void)viewDidMoveToWindow
{
[self becomeFirstResponder];
_cursorTimer = [[NSTimer scheduledTimerWithTimeInterval: .5
target: self
selector: @selector(cursorTimer:)
userInfo: nil
repeats: YES] retain];
}
-(void)viewDidMoveToSuperview
@ -191,6 +219,24 @@
}
}
}
// cursor.
iPoint cursor = _screen.cursor();
if (_cursorOn && iRect(minX, minY, maxX - minX, maxY - minY).contains(cursor))
{
NSRect charRect = NSMakeRect(_paddingLeft + cursor.x * _charWidth, _paddingTop + cursor.y *_charHeight, _charWidth, _charHeight);
[_foregroundColor setFill];
[_cursorImg drawInRect: charRect
fromRect: NSZeroRect operation: NSCompositeCopy
fraction: 1.0
respectFlipped: YES
hints: nil];
}
_screen.unlock();
@ -212,6 +258,7 @@
[_readerThread release];
[_emulator release];
[_cursorImg release];
[super dealloc];
}
@ -342,5 +389,104 @@
}
-(void)resizeTo: (iSize)size
{
NSWindow *window = [self window];
NSRect bounds = [self bounds];
NSSize newSize;
NSRect wframe = [window frame];
// TODO -- left/right padding...
newSize.width = size.width * _charWidth + _paddingLeft * 2;
newSize.height = size.height * _charHeight + _paddingTop * 2;
// best case -- no change.
if (NSEqualSizes(newSize, bounds.size)) return;
// ok, change needed.
wframe.origin.y -= (newSize.height - bounds.size.height);
wframe.size.height += newSize.height - bounds.size.height;
wframe.size.width += newSize.width - bounds.size.width;
[window setFrame: wframe display: YES animate: YES];
}
-(void)cursorTimer: (NSTimer *)timer
{
_screen.lock();
_cursorOn = !_cursorOn;
iRect r(_screen.cursor(), iSize(1,1));
[self invalidateIRect: r];
_screen.unlock();
}
#if 0
-(void)viewWillStartLiveResize
{
NSLog(@"%s", sel_getName(_cmd));
}
-(void)viewDidEndLiveResize
{
NSLog(@"%s", sel_getName(_cmd));
}
#endif
-(void)setFrame:(NSRect)frameRect
{
//NSLog(@"%s", sel_getName(_cmd));
if ([self inLiveResize])
{
unsigned width = floor((frameRect.size.width - _paddingLeft) / _charWidth);
unsigned height = floor((frameRect.size.height - _paddingTop) / _charHeight);
_screen.lock();
_screen.setSize(width, height, false);
_screen.unlock();
}
[super setFrame: frameRect];
}
@end
void ViewScreen::setSize(unsigned width, unsigned height)
{
setSize(width, height, true);
}
void ViewScreen::setSize(unsigned width, unsigned height, bool resizeView)
{
//
struct winsize ws;
ws.ws_row = height;
ws.ws_col = width;
ws.ws_xpixel = 0;
ws.ws_ypixel = 0;
Screen::setSize(width, height);
ioctl(_fd, TIOCSWINSZ, &ws);
if (resizeView)
{
[_view resizeTo: iSize(width, height)];
}
}

View File

@ -12,7 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
<integer value="9"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -41,12 +41,13 @@
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">271</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 66}, {620, 444}}</string>
<int key="NSWTFlags">544735232</int>
<string key="NSWindowRect">{{158, 575}, {620, 444}}</string>
<int key="NSWTFlags">539492352</int>
<string key="NSWindowTitle">Two Term [VT52]</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{620, 444}</string>
<object class="NSView" key="NSWindowView" id="1006">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@ -54,12 +55,12 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomView" id="1067446494">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomView" id="59249513">
<reference key="NSNextResponder" ref="1067446494"/>
<int key="NSvFlags">268</int>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{10, 10}, {560, 384}}</string>
<reference key="NSSuperview" ref="1067446494"/>
<string key="NSClassName">EmulatorView</string>
@ -73,7 +74,8 @@
<string key="NSFrameSize">{620, 444}</string>
<reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{620, 466}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
</object>
@ -177,18 +179,22 @@
<string>1.NSWindowTemplate.visibleAtLaunch</string>
<string>1.WindowOrigin</string>
<string>1.editorWindowContentRectSynchronizationRect</string>
<string>1.windowTemplate.hasMinSize</string>
<string>1.windowTemplate.minSize</string>
<string>2.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>9.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{{527, 376}, {620, 444}}</string>
<string>{{431, 524}, {620, 444}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{527, 376}, {620, 444}}</string>
<string>{{431, 524}, {620, 444}}</string>
<integer value="1"/>
<string>{196, 240}</string>
<string>{{202, 428}, {480, 270}}</string>
<boolean value="YES"/>
<string>{620, 444}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -551,6 +557,27 @@
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">

View File

@ -29,11 +29,16 @@ Screen::Screen(unsigned height, unsigned width)
}
Screen::~Screen()
{
}
void Screen::beginUpdate()
{
_lock.lock();
_updates.clear();
_updateCursor = _cursor;
}
iRect Screen::endUpdate()
@ -44,6 +49,11 @@ iRect Screen::endUpdate()
int minY = _height;
if (_cursor != _updateCursor)
{
_updates.push_back(_cursor);
_updates.push_back(_updateCursor);
}
for (UpdateIterator iter = _updates.begin(); iter != _updates.end(); ++iter)
{
@ -231,4 +241,43 @@ void Screen::reverseLineFeed()
_cursor.y--;
}
}
void Screen::setSize(unsigned width, unsigned height)
{
if ((_height == height) && (_width == width)) return;
if (_height < height)
{
_screen.resize(height);
}
else if (_height > height)
{
unsigned count = _height - height;
// erase lines from the top.
_screen.erase(_screen.begin(), _screen.begin() + count);
}
//if (_width != _width || _height != height)
{
ScreenIterator iter;
for (iter = _screen.begin(); iter != _screen.end(); ++iter)
{
iter->resize(width);
}
}
_height = height;
_width = width;
if (_cursor.y >= height) _cursor.y = height - 1;
if (_cursor.x >= width) _cursor.x = width - 1;
//fprintf(stderr, "setSize(%u, %u)\n", width, height);
}

View File

@ -41,6 +41,9 @@ public:
Screen(unsigned height = 24, unsigned width = 80);
virtual ~Screen();
int x() const;
int y() const;
@ -61,6 +64,7 @@ public:
void setCursor(iPoint point, bool clampX = true, bool clampY = true);
void setCursor(int x, int y, bool clampX = true, bool clampY = true);
void setFlag(uint8_t flag);
@ -82,9 +86,14 @@ public:
void lock();
void unlock();
virtual void setSize(unsigned width, unsigned height);
private:
iPoint _cursor;
unsigned _height;
unsigned _width;
@ -96,6 +105,7 @@ private:
std::vector< std::vector< CharInfo > > _screen;
std::vector<iPoint> _updates;
iPoint _updateCursor;
typedef std::vector< std::vector< CharInfo > >::iterator ScreenIterator;

View File

@ -11,7 +11,7 @@
#include "iGeometry.h"
bool iRect::contains(iPoint aPoint) const
bool iRect::contains(const iPoint aPoint) const
{
return aPoint.x >= origin.x
&& aPoint.y >= origin.y
@ -19,10 +19,15 @@ bool iRect::contains(iPoint aPoint) const
&& aPoint.y <= origin.y + size.height;
}
bool iRect::contains(iRect aRect) const
bool iRect::contains(const iRect aRect) const
{
return aRect.origin.x >= origin.x
&& aRect.origin.y >= origin.y
&& aRect.origin.x + aRect.size.width <= origin.x + size.width
&& aRect.origin.y + aRect.size.height <= origin.y + size.height;
}
bool iRect::intersects(const iRect aRect) const
{
return aRect.contains(origin) || aRect.contains(origin.offset(size));
}

View File

@ -11,18 +11,6 @@
#define __IGEOMETRY_H__
typedef struct iPoint {
int x;
int y;
#ifdef __cplusplus
iPoint() : x(0), y(0) {}
iPoint(const iPoint &aPoint) : x(aPoint.x), y(aPoint.y) {}
iPoint(int xx, int yy) : x(xx), y(yy) {}
#endif
} iPoint;
typedef struct iSize {
@ -34,11 +22,46 @@ typedef struct iSize {
iSize() : width(0), height(0) {}
iSize(const iSize &aSize) : width(aSize.width), height(aSize.width) {}
iSize(int w, int h) : width(w), height(h) {}
bool operator==(const iSize &aSize)
{ return width == aSize.width && height == aSize.height; }
bool operator!=(const iSize& aSize)
{ return !(*this == aSize); }
#endif
} iSize;
typedef struct iPoint {
int x;
int y;
#ifdef __cplusplus
iPoint() : x(0), y(0) {}
iPoint(const iPoint &aPoint) : x(aPoint.x), y(aPoint.y) {}
iPoint(int xx, int yy) : x(xx), y(yy) {}
bool operator==(const iPoint &aPoint)
{ return x == aPoint.x && y == aPoint.y; }
bool operator!=(const iPoint &aPoint)
{ return !(*this == aPoint); }
iPoint offset(int dx, int dy) const
{ return iPoint(x + dx, y + dy); }
iPoint offset(iSize aSize) const
{ return iPoint(x + aSize.width, y + aSize.height); }
#endif
} iPoint;
typedef struct iRect {
iPoint origin;
iSize size;
@ -47,11 +70,12 @@ typedef struct iRect {
iRect() {}
iRect(const iRect &aRect) : origin(aRect.origin), size(aRect.size) {}
iRect(const iPoint &aPoint, const iSize &aSize) : origin(aPoint), size(aSize) {}
iRect(int x, int y, int width, int height) : origin(iPoint(x, y)), size(iSize(width, height)) {}
bool contains(iPoint aPoint) const;
bool contains(iRect aRect) const;
bool contains(const iPoint aPoint) const;
bool contains(const iRect aRect) const;
bool intersects(iRect aRect) const;
bool intersects(const iRect aRect) const;
#endif
} iRect;