mirror of
https://github.com/ksherlock/TwoTerm.git
synced 2024-09-27 08:54:24 +00:00
git-svn-id: svn://qnap.local/TwoTerm/trunk@1981 5590a31f-7b70-45f8-8c82-aa3a8e5f4507
This commit is contained in:
parent
46eac4c3ec
commit
1658fd2dd6
@ -31,7 +31,7 @@
|
||||
breakpoints = (
|
||||
B676066111DEBFB000D6B66C /* TwoTermAppDelegate.m:34 */,
|
||||
B676066711DEC06900D6B66C /* TermWindowController.mm:42 */,
|
||||
B65FA27911E29E8D00EB447E /* EmulatorView.mm:169 */,
|
||||
B65FA27911E29E8D00EB447E /* EmulatorView.mm:166 */,
|
||||
B649E13D11E2BC7A0061921F /* VT52View.mm:460 */,
|
||||
B649E15211E2BF130061921F /* VT52View.mm:107 */,
|
||||
B649E17111E2C3C50061921F /* VT52View.mm:598 */,
|
||||
@ -45,21 +45,23 @@
|
||||
B66979B111E6A8D0002ED475 /* VT52.mm:258 */,
|
||||
B60EBE0511E916BD00C1974F /* ScanLineFilter.m:23 */,
|
||||
B60EBE0711E916C000C1974F /* ScanLineFilter.m:24 */,
|
||||
B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:498 */,
|
||||
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:556 */,
|
||||
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:553 */,
|
||||
B64925ED11EE73ED0065E73A /* VT52.mm:82 */,
|
||||
B649260011EE74E30065E73A /* VT52.mm:149 */,
|
||||
B6358D0111F6846C00437AA2 /* VT100.mm:502 */,
|
||||
B6358D0311F6846F00437AA2 /* VT100.mm:477 */,
|
||||
B6358D0B11F6852300437AA2 /* VT100.mm:457 */,
|
||||
B6358D0E11F685B600437AA2 /* Screen.cpp:254 */,
|
||||
B6358D0E11F685B600437AA2 /* Screen.cpp:400 */,
|
||||
B642D32A11FFA06800CBB349 /* VT100.mm:611 */,
|
||||
B6F243ED12BDA1280071AF8A /* EmulatorView.mm:471 */,
|
||||
B6F2442012BDB49A0071AF8A /* PTSE.mm:108 */,
|
||||
B6F2442B12BDB4F10071AF8A /* PTSE.mm:136 */,
|
||||
B637CD0B12BEAA05009FDC31 /* PTSE.mm:312 */,
|
||||
B637CD0E12BEAA18009FDC31 /* PTSE.mm:78 */,
|
||||
B6C99E5C12BF030500C379FF /* EmulatorView.mm:539 */,
|
||||
B6F243ED12BDA1280071AF8A /* EmulatorView.mm:468 */,
|
||||
B6F2442012BDB49A0071AF8A /* PTSE.mm:114 */,
|
||||
B6F2442B12BDB4F10071AF8A /* PTSE.mm:142 */,
|
||||
B637CD0B12BEAA05009FDC31 /* PTSE.mm:318 */,
|
||||
B637CD0E12BEAA18009FDC31 /* PTSE.mm:84 */,
|
||||
B6C99E5C12BF030500C379FF /* EmulatorView.mm:536 */,
|
||||
B6720BCA12C182F20030413E /* GNOConsole.mm:247 */,
|
||||
B6720BED12C1855A0030413E /* EmulatorView.mm:173 */,
|
||||
B6720BF212C185800030413E /* GNOConsole.mm:198 */,
|
||||
);
|
||||
codeSenseManager = B676054911DADB9100D6B66C /* Code sense */;
|
||||
executables = (
|
||||
@ -162,17 +164,20 @@
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 314500304;
|
||||
PBXWorkspaceStateSaveDate = 314500304;
|
||||
PBXPerProjectTemplateStateSaveDate = 316144660;
|
||||
PBXWorkspaceStateSaveDate = 316144660;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
B60EBDFB11E916AE00C1974F /* PBXTextBookmark */ = B60EBDFB11E916AE00C1974F /* PBXTextBookmark */;
|
||||
B60EBDFC11E916AE00C1974F /* PBXTextBookmark */ = B60EBDFC11E916AE00C1974F /* PBXTextBookmark */;
|
||||
B60EBE6211E91C5900C1974F /* PBXTextBookmark */ = B60EBE6211E91C5900C1974F /* PBXTextBookmark */;
|
||||
B61069C412B72942007204C0 /* PBXTextBookmark */ = B61069C412B72942007204C0 /* PBXTextBookmark */;
|
||||
B637CCFC12BEA992009FDC31 /* PBXTextBookmark */ = B637CCFC12BEA992009FDC31 /* PBXTextBookmark */;
|
||||
B634EF2E12D7FC27004B2F57 /* PBXTextBookmark */ = B634EF2E12D7FC27004B2F57 /* PBXTextBookmark */;
|
||||
B634EF2F12D7FC27004B2F57 /* PBXTextBookmark */ = B634EF2F12D7FC27004B2F57 /* PBXTextBookmark */;
|
||||
B634EF3012D7FC27004B2F57 /* PBXTextBookmark */ = B634EF3012D7FC27004B2F57 /* PBXTextBookmark */;
|
||||
B634EF3512D81161004B2F57 /* PBXTextBookmark */ = B634EF3512D81161004B2F57 /* PBXTextBookmark */;
|
||||
B641C88811EA8DCC00B6359F /* PBXTextBookmark */ = B641C88811EA8DCC00B6359F /* PBXTextBookmark */;
|
||||
B64925C411EE622D0065E73A /* PBXTextBookmark */ = B64925C411EE622D0065E73A /* PBXTextBookmark */;
|
||||
B653E42C12C0701E001DCE27 /* PBXTextBookmark */ = B653E42C12C0701E001DCE27 /* PBXTextBookmark */;
|
||||
B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */ = B65FA2FE11E2A5D200EB447E /* PBXTextBookmark */;
|
||||
B662524E12BD9D14002B1529 /* PBXBookmark */ = B662524E12BD9D14002B1529 /* PBXBookmark */;
|
||||
B66979BD11E6ACB9002ED475 /* PBXTextBookmark */ = B66979BD11E6ACB9002ED475 /* PBXTextBookmark */;
|
||||
@ -181,10 +186,19 @@
|
||||
B6697A5411E7E072002ED475 /* PBXTextBookmark */ = B6697A5411E7E072002ED475 /* PBXTextBookmark */;
|
||||
B6697A5511E7E072002ED475 /* PBXTextBookmark */ = B6697A5511E7E072002ED475 /* PBXTextBookmark */;
|
||||
B6697A5611E7E072002ED475 /* PBXTextBookmark */ = B6697A5611E7E072002ED475 /* PBXTextBookmark */;
|
||||
B6697A5811E7E072002ED475 /* PBXTextBookmark */ = B6697A5811E7E072002ED475 /* PBXTextBookmark */;
|
||||
B6697A5911E7E072002ED475 /* PBXTextBookmark */ = B6697A5911E7E072002ED475 /* PBXTextBookmark */;
|
||||
B6697A5A11E7E072002ED475 /* PBXTextBookmark */ = B6697A5A11E7E072002ED475 /* PBXTextBookmark */;
|
||||
B672878912B9C36800774C3B /* PBXBookmark */ = B672878912B9C36800774C3B /* PBXBookmark */;
|
||||
B673C0D212C2FEA800923CE5 /* PBXTextBookmark */ = B673C0D212C2FEA800923CE5 /* PBXTextBookmark */;
|
||||
B673C15D12C4401E00923CE5 /* PBXTextBookmark */ = B673C15D12C4401E00923CE5 /* PBXTextBookmark */;
|
||||
B673C16712C4401E00923CE5 /* PBXTextBookmark */ = B673C16712C4401E00923CE5 /* PBXTextBookmark */;
|
||||
B673C16812C4401E00923CE5 /* PBXTextBookmark */ = B673C16812C4401E00923CE5 /* PBXTextBookmark */;
|
||||
B673C17A12C46C0800923CE5 /* PBXTextBookmark */ = B673C17A12C46C0800923CE5 /* PBXTextBookmark */;
|
||||
B673C1B312C5625100923CE5 /* PBXTextBookmark */ = B673C1B312C5625100923CE5 /* PBXTextBookmark */;
|
||||
B673C1B412C5625100923CE5 /* PBXTextBookmark */ = B673C1B412C5625100923CE5 /* PBXTextBookmark */;
|
||||
B673C1B612C5625100923CE5 /* PBXTextBookmark */ = B673C1B612C5625100923CE5 /* PBXTextBookmark */;
|
||||
B673C1C812C5845400923CE5 /* PBXTextBookmark */ = B673C1C812C5845400923CE5 /* PBXTextBookmark */;
|
||||
B673C24512C666C700923CE5 /* PBXTextBookmark */ = B673C24512C666C700923CE5 /* PBXTextBookmark */;
|
||||
B676058811DAE21100D6B66C /* PBXTextBookmark */ = B676058811DAE21100D6B66C /* PBXTextBookmark */;
|
||||
B676058911DAE21100D6B66C /* PBXTextBookmark */ = B676058911DAE21100D6B66C /* PBXTextBookmark */;
|
||||
B676058B11DAE21100D6B66C /* PlistBookmark */ = B676058B11DAE21100D6B66C /* PlistBookmark */;
|
||||
@ -192,18 +206,12 @@
|
||||
B676060711DD4FA600D6B66C /* PBXTextBookmark */ = B676060711DD4FA600D6B66C /* PBXTextBookmark */;
|
||||
B676064811DEB80600D6B66C /* PBXTextBookmark */ = B676064811DEB80600D6B66C /* PBXTextBookmark */;
|
||||
B67606C811DED91C00D6B66C /* PBXTextBookmark */ = B67606C811DED91C00D6B66C /* PBXTextBookmark */;
|
||||
B67B3D1212B724790033AE07 /* PBXTextBookmark */ = B67B3D1212B724790033AE07 /* PBXTextBookmark */;
|
||||
B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */ = B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */;
|
||||
B6A0F71A11F22CD200AC3547 /* PBXTextBookmark */ = B6A0F71A11F22CD200AC3547 /* PBXTextBookmark */;
|
||||
B6C99E2712BEF7BF00C379FF /* PBXTextBookmark */ = B6C99E2712BEF7BF00C379FF /* PBXTextBookmark */;
|
||||
B6C99E4D12BF011300C379FF /* PBXTextBookmark */ = B6C99E4D12BF011300C379FF /* PBXTextBookmark */;
|
||||
B6C99E6912BF064F00C379FF /* PBXTextBookmark */ = B6C99E6912BF064F00C379FF /* PBXTextBookmark */;
|
||||
B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = B6D1D11711FFA83D00196D8E /* PBXTextBookmark */;
|
||||
B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */;
|
||||
B6F243C512BD9E070071AF8A /* PBXTextBookmark */ = B6F243C512BD9E070071AF8A /* PBXTextBookmark */;
|
||||
B6F243D812BD9E1A0071AF8A /* PBXTextBookmark */ = B6F243D812BD9E1A0071AF8A /* PBXTextBookmark */;
|
||||
B6F243F112BDA12E0071AF8A /* PBXTextBookmark */ = B6F243F112BDA12E0071AF8A /* PBXTextBookmark */;
|
||||
B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */ = B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */;
|
||||
B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */ = B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = B676054811DADB9100D6B66C /* Source Control */;
|
||||
@ -285,7 +293,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 23;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.515075;
|
||||
modificationTime = 314925648.684403;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -303,7 +311,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 24;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.515301;
|
||||
modificationTime = 314925648.684919;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -341,6 +349,13 @@
|
||||
sepNavVisRange = "{0, 1983}";
|
||||
};
|
||||
};
|
||||
B61D0D62125B89E8001C713B /* EmulatorManager.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1131}}";
|
||||
sepNavSelRange = "{953, 0}";
|
||||
sepNavVisRange = "{0, 1504}";
|
||||
};
|
||||
};
|
||||
B61D0D67125B8E06001C713B /* Defaults.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1046}}";
|
||||
@ -355,6 +370,43 @@
|
||||
sepNavVisRange = "{0, 412}";
|
||||
};
|
||||
};
|
||||
B634EF2E12D7FC27004B2F57 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
|
||||
name = "Screen.cpp: 499";
|
||||
rLen = 0;
|
||||
rLoc = 11041;
|
||||
rType = 0;
|
||||
vrLen = 661;
|
||||
vrLoc = 8408;
|
||||
};
|
||||
B634EF2F12D7FC27004B2F57 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */;
|
||||
name = "iGeometry.h: 78";
|
||||
rLen = 0;
|
||||
rLoc = 1746;
|
||||
rType = 0;
|
||||
vrLen = 417;
|
||||
vrLoc = 629;
|
||||
};
|
||||
B634EF3012D7FC27004B2F57 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */;
|
||||
rLen = 11;
|
||||
rLoc = 2970;
|
||||
rType = 0;
|
||||
};
|
||||
B634EF3512D81161004B2F57 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */;
|
||||
name = "CharacterGenerator.m: 124";
|
||||
rLen = 15;
|
||||
rLoc = 2970;
|
||||
rType = 0;
|
||||
vrLen = 365;
|
||||
vrLoc = 2713;
|
||||
};
|
||||
B6358D0111F6846C00437AA2 /* VT100.mm:502 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
@ -369,7 +421,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 502;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.516886;
|
||||
modificationTime = 314925648.688455;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -387,7 +439,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 477;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.517101;
|
||||
modificationTime = 314925648.688755;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -405,11 +457,11 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 457;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.517321;
|
||||
modificationTime = 314925648.689123;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6358D0E11F685B600437AA2 /* Screen.cpp:254 */ = {
|
||||
B6358D0E11F685B600437AA2 /* Screen.cpp:400 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -421,23 +473,13 @@
|
||||
functionName = "Screen::erase(EraseRegion region)";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 254;
|
||||
lineNumber = 400;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.517538;
|
||||
modificationTime = 314925648.68933;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B637CCFC12BEA992009FDC31 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */;
|
||||
name = "PTSE.mm: 231";
|
||||
rLen = 0;
|
||||
rLoc = 6673;
|
||||
rType = 0;
|
||||
vrLen = 547;
|
||||
vrLoc = 6541;
|
||||
};
|
||||
B637CD0B12BEAA05009FDC31 /* PTSE.mm:312 */ = {
|
||||
B637CD0B12BEAA05009FDC31 /* PTSE.mm:318 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -449,13 +491,13 @@
|
||||
functionName = "-keyDown:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 312;
|
||||
lineNumber = 318;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.518868;
|
||||
modificationTime = 314925648.691389;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B637CD0E12BEAA18009FDC31 /* PTSE.mm:78 */ = {
|
||||
B637CD0E12BEAA18009FDC31 /* PTSE.mm:84 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -467,9 +509,9 @@
|
||||
functionName = "-processCharacter:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 78;
|
||||
lineNumber = 84;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.519105;
|
||||
modificationTime = 314925648.6916839;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -497,20 +539,10 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 611;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.51776;
|
||||
modificationTime = 314925648.690089;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B64925C411EE622D0065E73A /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */;
|
||||
name = "Screen.cpp: 383";
|
||||
rLen = 0;
|
||||
rLoc = 10997;
|
||||
rType = 0;
|
||||
vrLen = 772;
|
||||
vrLoc = 4080;
|
||||
};
|
||||
B64925D811EE6C350065E73A /* VT100.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1064, 997}}";
|
||||
@ -539,7 +571,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 82;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.516414;
|
||||
modificationTime = 314925648.685899;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -557,7 +589,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 149;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.516672;
|
||||
modificationTime = 314925648.686222;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -575,7 +607,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 460;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.51114;
|
||||
modificationTime = 314925648.678896;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -593,7 +625,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 107;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.511371;
|
||||
modificationTime = 314925648.6790761;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -611,7 +643,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 598;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.512569;
|
||||
modificationTime = 314925648.6798919;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -629,7 +661,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 607;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.513315;
|
||||
modificationTime = 314925648.680831;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -647,7 +679,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 170;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.513556;
|
||||
modificationTime = 314925648.6829211;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -665,11 +697,35 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 113;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.513762;
|
||||
modificationTime = 314925648.68312;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B65FA27911E29E8D00EB447E /* EmulatorView.mm:169 */ = {
|
||||
B653E41612C05C8C001DCE27 /* GNOConsole.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1859, 6435}}";
|
||||
sepNavSelRange = "{11068, 0}";
|
||||
sepNavVisRange = "{11024, 650}";
|
||||
};
|
||||
};
|
||||
B653E41712C05C8C001DCE27 /* GNOConsole.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1046}}";
|
||||
sepNavSelRange = "{228, 0}";
|
||||
sepNavVisRange = "{0, 374}";
|
||||
};
|
||||
};
|
||||
B653E42C12C0701E001DCE27 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B67606D811DF6DAB00D6B66C /* EmulatorView.h */;
|
||||
name = "EmulatorView.h: 89";
|
||||
rLen = 0;
|
||||
rLoc = 1578;
|
||||
rType = 0;
|
||||
vrLen = 573;
|
||||
vrLoc = 1273;
|
||||
};
|
||||
B65FA27911E29E8D00EB447E /* EmulatorView.mm:166 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -681,9 +737,9 @@
|
||||
functionName = "-drawRect:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 169;
|
||||
lineNumber = 166;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.510732;
|
||||
modificationTime = 314925648.678643;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -736,7 +792,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 202;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.513965;
|
||||
modificationTime = 314925648.68349;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -754,7 +810,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 201;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.514165;
|
||||
modificationTime = 314925648.683659;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -772,7 +828,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 296;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.514387;
|
||||
modificationTime = 314925648.683835;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -790,7 +846,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 290;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.5146;
|
||||
modificationTime = 314925648.6840121;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -808,7 +864,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 258;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.514853;
|
||||
modificationTime = 314925648.684189;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -855,9 +911,9 @@
|
||||
};
|
||||
B6697A3C11E7CCA0002ED475 /* PTSE.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 4069}}";
|
||||
sepNavSelRange = "{8084, 0}";
|
||||
sepNavVisRange = "{7049, 2162}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 4901}}";
|
||||
sepNavSelRange = "{978, 0}";
|
||||
sepNavVisRange = "{618, 2099}";
|
||||
};
|
||||
};
|
||||
B6697A5311E7E072002ED475 /* PBXTextBookmark */ = {
|
||||
@ -900,16 +956,6 @@
|
||||
vrLen = 482;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6697A5811E7E072002ED475 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A08B11E5720F00F54CC8 /* Emulator.h */;
|
||||
name = "Emulator.h: 17";
|
||||
rLen = 0;
|
||||
rLoc = 286;
|
||||
rType = 0;
|
||||
vrLen = 542;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6697A5911E7E072002ED475 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6697A3B11E7CCA0002ED475 /* PTSE.h */;
|
||||
@ -930,10 +976,178 @@
|
||||
vrLen = 387;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B6720BCA12C182F20030413E /* GNOConsole.mm:247 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
countType = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = B653E41612C05C8C001DCE27 /* GNOConsole.mm */;
|
||||
functionName = "-processCharacter:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 247;
|
||||
location = 2Term;
|
||||
modificationTime = 314925648.692364;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6720BED12C1855A0030413E /* EmulatorView.mm:173 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
countType = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
|
||||
functionName = "-drawRect:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 173;
|
||||
location = 2Term;
|
||||
modificationTime = 314925648.6925861;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6720BF212C185800030413E /* GNOConsole.mm:198 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
breakpointStyle = 0;
|
||||
continueAfterActions = 0;
|
||||
countType = 0;
|
||||
delayBeforeContinue = 0;
|
||||
fileReference = B653E41612C05C8C001DCE27 /* GNOConsole.mm */;
|
||||
functionName = "-processCharacter:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 198;
|
||||
location = 2Term;
|
||||
modificationTime = 314925648.692897;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B672878912B9C36800774C3B /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = B67B3CE412B6FA040033AE07 /* a2-charset-80.png */;
|
||||
};
|
||||
B673C0D212C2FEA800923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B653E41712C05C8C001DCE27 /* GNOConsole.h */;
|
||||
name = "GNOConsole.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 337;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B673C14912C3F0CF00923CE5 /* Apple80.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1023}}";
|
||||
sepNavSelRange = "{208, 0}";
|
||||
sepNavVisRange = "{0, 309}";
|
||||
};
|
||||
};
|
||||
B673C14A12C3F0CF00923CE5 /* Apple80.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 4043}}";
|
||||
sepNavSelRange = "{837, 0}";
|
||||
sepNavVisRange = "{136, 1086}";
|
||||
};
|
||||
};
|
||||
B673C15D12C4401E00923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B61D0D62125B89E8001C713B /* EmulatorManager.m */;
|
||||
name = "EmulatorManager.m: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 312;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B673C16712C4401E00923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */;
|
||||
name = "PTSE.mm: 153";
|
||||
rLen = 0;
|
||||
rLoc = 3621;
|
||||
rType = 0;
|
||||
vrLen = 800;
|
||||
vrLoc = 3158;
|
||||
};
|
||||
B673C16812C4401E00923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B673C14912C3F0CF00923CE5 /* Apple80.h */;
|
||||
name = "Apple80.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 206;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B673C17A12C46C0800923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B673C14A12C3F0CF00923CE5 /* Apple80.mm */;
|
||||
name = "Apple80.mm: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 307;
|
||||
vrLoc = 0;
|
||||
};
|
||||
B673C1B312C5625100923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
|
||||
name = "Screen.h: 141";
|
||||
rLen = 0;
|
||||
rLoc = 3271;
|
||||
rType = 0;
|
||||
vrLen = 382;
|
||||
vrLoc = 2474;
|
||||
};
|
||||
B673C1B412C5625100923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A08B11E5720F00F54CC8 /* Emulator.h */;
|
||||
name = "Emulator.h: 52";
|
||||
rLen = 0;
|
||||
rLoc = 849;
|
||||
rType = 0;
|
||||
vrLen = 430;
|
||||
vrLoc = 357;
|
||||
};
|
||||
B673C1B612C5625100923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */;
|
||||
name = "TermWindowController.mm: 86";
|
||||
rLen = 0;
|
||||
rLoc = 1550;
|
||||
rType = 0;
|
||||
vrLen = 500;
|
||||
vrLoc = 1301;
|
||||
};
|
||||
B673C1C812C5845400923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
|
||||
name = "EmulatorView.mm: 201";
|
||||
rLen = 0;
|
||||
rLoc = 4260;
|
||||
rType = 0;
|
||||
vrLen = 675;
|
||||
vrLoc = 3698;
|
||||
};
|
||||
B673C24512C666C700923CE5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B653E41612C05C8C001DCE27 /* GNOConsole.mm */;
|
||||
name = "GNOConsole.mm: 410";
|
||||
rLen = 0;
|
||||
rLoc = 11068;
|
||||
rType = 0;
|
||||
vrLen = 514;
|
||||
vrLoc = 10873;
|
||||
};
|
||||
B676053511DADB8100D6B66C /* 2Term */ = {
|
||||
isa = PBXExecutable;
|
||||
activeArgIndices = (
|
||||
@ -1054,9 +1268,9 @@
|
||||
};
|
||||
B676063A11DEAD3500D6B66C /* TermWindowController.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 2912}}";
|
||||
sepNavSelRange = "{288, 0}";
|
||||
sepNavVisRange = "{2809, 1831}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 3159}}";
|
||||
sepNavSelRange = "{1559, 0}";
|
||||
sepNavVisRange = "{434, 1525}";
|
||||
};
|
||||
};
|
||||
B676064811DEB80600D6B66C /* PBXTextBookmark */ = {
|
||||
@ -1083,7 +1297,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 34;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.510016;
|
||||
modificationTime = 314925648.6776339;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -1101,7 +1315,7 @@
|
||||
ignoreCount = 0;
|
||||
lineNumber = 42;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.510467;
|
||||
modificationTime = 314925648.678069;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -1132,47 +1346,37 @@
|
||||
};
|
||||
B67606D811DF6DAB00D6B66C /* EmulatorView.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1378}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1859, 1378}}";
|
||||
sepNavSelRange = "{1578, 0}";
|
||||
sepNavVisRange = "{324, 1522}";
|
||||
sepNavVisRange = "{1273, 573}";
|
||||
};
|
||||
};
|
||||
B67606D911DF6DAB00D6B66C /* EmulatorView.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 9191}}";
|
||||
sepNavSelRange = "{15910, 8}";
|
||||
sepNavVisRange = "{11682, 537}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 8970}}";
|
||||
sepNavSelRange = "{4260, 0}";
|
||||
sepNavVisRange = "{3698, 675}";
|
||||
};
|
||||
};
|
||||
B67B3D1212B724790033AE07 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */;
|
||||
name = "CharacterGenerator.m: 135";
|
||||
rLen = 0;
|
||||
rLoc = 3078;
|
||||
rType = 0;
|
||||
vrLen = 958;
|
||||
vrLoc = 730;
|
||||
};
|
||||
B699A02E11E528BC00F54CC8 /* Screen.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1859, 2769}}";
|
||||
sepNavSelRange = "{3511, 0}";
|
||||
sepNavVisRange = "{3307, 377}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 3549}}";
|
||||
sepNavSelRange = "{673, 0}";
|
||||
sepNavVisRange = "{0, 1380}";
|
||||
};
|
||||
};
|
||||
B699A02F11E528BC00F54CC8 /* Screen.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1859, 7319}}";
|
||||
sepNavSelRange = "{3709, 0}";
|
||||
sepNavVisRange = "{3484, 377}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 9386}}";
|
||||
sepNavSelRange = "{11041, 0}";
|
||||
sepNavVisRange = "{8408, 661}";
|
||||
};
|
||||
};
|
||||
B699A03211E528DE00F54CC8 /* iGeometry.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1167, 1365}}";
|
||||
sepNavSelRange = "{2096, 0}";
|
||||
sepNavVisRange = "{315, 1803}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 1352}}";
|
||||
sepNavSelRange = "{1746, 0}";
|
||||
sepNavVisRange = "{629, 417}";
|
||||
};
|
||||
};
|
||||
B699A05B11E54D4500F54CC8 /* OutputChannel.h */ = {
|
||||
@ -1191,9 +1395,9 @@
|
||||
};
|
||||
B699A08B11E5720F00F54CC8 /* Emulator.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1167, 1011}}";
|
||||
sepNavSelRange = "{633, 0}";
|
||||
sepNavVisRange = "{0, 639}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 1046}}";
|
||||
sepNavSelRange = "{187, 0}";
|
||||
sepNavVisRange = "{0, 896}";
|
||||
};
|
||||
};
|
||||
B699A08F11E572A300F54CC8 /* VT52.h */ = {
|
||||
@ -1205,9 +1409,9 @@
|
||||
};
|
||||
B699A09011E572A300F54CC8 /* VT52.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 7137}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 7241}}";
|
||||
sepNavSelRange = "{3524, 0}";
|
||||
sepNavVisRange = "{3019, 707}";
|
||||
sepNavVisRange = "{0, 1377}";
|
||||
};
|
||||
};
|
||||
B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */ = {
|
||||
@ -1247,14 +1451,7 @@
|
||||
vrLen = 707;
|
||||
vrLoc = 3019;
|
||||
};
|
||||
B6C99E4D12BF011300C379FF /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
|
||||
rLen = 8;
|
||||
rLoc = 15910;
|
||||
rType = 0;
|
||||
};
|
||||
B6C99E5C12BF030500C379FF /* EmulatorView.mm:539 */ = {
|
||||
B6C99E5C12BF030500C379FF /* EmulatorView.mm:536 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -1266,22 +1463,12 @@
|
||||
functionName = "-setFrame:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 539;
|
||||
lineNumber = 536;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.519342;
|
||||
modificationTime = 314925648.692;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6C99E6912BF064F00C379FF /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */;
|
||||
name = "EmulatorView.mm: 703";
|
||||
rLen = 8;
|
||||
rLoc = 15910;
|
||||
rType = 0;
|
||||
vrLen = 537;
|
||||
vrLoc = 11682;
|
||||
};
|
||||
B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B64925D911EE6C350065E73A /* VT100.mm */;
|
||||
@ -1292,35 +1479,7 @@
|
||||
vrLen = 1231;
|
||||
vrLoc = 16416;
|
||||
};
|
||||
B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */;
|
||||
name = "iGeometry.h: 78";
|
||||
rLen = 0;
|
||||
rLoc = 1745;
|
||||
rType = 0;
|
||||
vrLen = 767;
|
||||
vrLoc = 278;
|
||||
};
|
||||
B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:498 */ = {
|
||||
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 = 498;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.515652;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:556 */ = {
|
||||
B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:553 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -1332,9 +1491,9 @@
|
||||
functionName = "ViewScreen::setSize(unsigned width, unsigned height, bool resizeView)";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 556;
|
||||
lineNumber = 553;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.515955;
|
||||
modificationTime = 314925648.68559;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -1347,9 +1506,9 @@
|
||||
};
|
||||
B6EBE2B411E0EA9100EA0458 /* CharacterGenerator.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1048, 1755}}";
|
||||
sepNavSelRange = "{1960, 0}";
|
||||
sepNavVisRange = "{1051, 2027}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1513, 1755}}";
|
||||
sepNavSelRange = "{2970, 15}";
|
||||
sepNavVisRange = "{2713, 365}";
|
||||
};
|
||||
};
|
||||
B6F243C512BD9E070071AF8A /* PBXTextBookmark */ = {
|
||||
@ -1372,7 +1531,7 @@
|
||||
vrLen = 528;
|
||||
vrLoc = 1084;
|
||||
};
|
||||
B6F243ED12BDA1280071AF8A /* EmulatorView.mm:471 */ = {
|
||||
B6F243ED12BDA1280071AF8A /* EmulatorView.mm:468 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -1384,23 +1543,13 @@
|
||||
functionName = "-resizeTo:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 471;
|
||||
lineNumber = 468;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.518015;
|
||||
modificationTime = 314925648.690321;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6F243F112BDA12E0071AF8A /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */;
|
||||
name = "TermWindowController.mm: 178";
|
||||
rLen = 0;
|
||||
rLoc = 4440;
|
||||
rType = 0;
|
||||
vrLen = 560;
|
||||
vrLoc = 3210;
|
||||
};
|
||||
B6F2442012BDB49A0071AF8A /* PTSE.mm:108 */ = {
|
||||
B6F2442012BDB49A0071AF8A /* PTSE.mm:114 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -1412,13 +1561,13 @@
|
||||
functionName = "-processCharacter:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 108;
|
||||
lineNumber = 114;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.518389;
|
||||
modificationTime = 314925648.690596;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
B6F2442B12BDB4F10071AF8A /* PTSE.mm:136 */ = {
|
||||
B6F2442B12BDB4F10071AF8A /* PTSE.mm:142 */ = {
|
||||
isa = PBXFileBreakpoint;
|
||||
actions = (
|
||||
);
|
||||
@ -1430,9 +1579,9 @@
|
||||
functionName = "-processCharacter:screen:output:";
|
||||
hitCount = 0;
|
||||
ignoreCount = 0;
|
||||
lineNumber = 136;
|
||||
lineNumber = 142;
|
||||
location = 2Term;
|
||||
modificationTime = 314508599.518633;
|
||||
modificationTime = 314925648.691081;
|
||||
originalNumberOfMultipleMatches = 1;
|
||||
state = 2;
|
||||
};
|
||||
@ -1445,21 +1594,11 @@
|
||||
};
|
||||
B6F444C711E41AC000C3A836 /* VT05.mm */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1167, 3315}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1022, 3432}}";
|
||||
sepNavSelRange = "{6030, 0}";
|
||||
sepNavVisRange = "{638, 1966}";
|
||||
sepNavVisRange = "{0, 1229}";
|
||||
};
|
||||
};
|
||||
B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B699A02E11E528BC00F54CC8 /* Screen.h */;
|
||||
name = "Screen.h: 203";
|
||||
rLen = 0;
|
||||
rLoc = 3701;
|
||||
rType = 0;
|
||||
vrLen = 266;
|
||||
vrLoc = 2850;
|
||||
};
|
||||
B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = B64925D811EE6C350065E73A /* VT100.h */;
|
||||
|
@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ActivePerspectiveName</key>
|
||||
<string>Debug</string>
|
||||
<string>Project</string>
|
||||
<key>AllowedModules</key>
|
||||
<array>
|
||||
<dict>
|
||||
@ -285,8 +285,8 @@
|
||||
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
||||
<array>
|
||||
<array>
|
||||
<integer>26</integer>
|
||||
<integer>19</integer>
|
||||
<integer>34</integer>
|
||||
<integer>23</integer>
|
||||
<integer>0</integer>
|
||||
</array>
|
||||
</array>
|
||||
@ -307,6 +307,8 @@
|
||||
<string>MainColumn</string>
|
||||
<real>324</real>
|
||||
</array>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>0 59 1920 1119 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXSmartGroupTreeModule</string>
|
||||
@ -317,12 +319,14 @@
|
||||
<key>Dock</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>B676054211DADB9000D6B66C</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>EmulatorView.mm</string>
|
||||
<string>CharacterGenerator.m</string>
|
||||
<key>PBXSplitModuleInNavigatorKey</key>
|
||||
<dict>
|
||||
<key>Split0</key>
|
||||
@ -330,11 +334,11 @@
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>B676054311DADB9000D6B66C</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>EmulatorView.mm</string>
|
||||
<string>CharacterGenerator.m</string>
|
||||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>B6C99E6912BF064F00C379FF</string>
|
||||
<string>B634EF3512D81161004B2F57</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>B676058811DAE21100D6B66C</string>
|
||||
@ -352,29 +356,35 @@
|
||||
<string>B6697A5411E7E072002ED475</string>
|
||||
<string>B6697A5511E7E072002ED475</string>
|
||||
<string>B6697A5611E7E072002ED475</string>
|
||||
<string>B6697A5811E7E072002ED475</string>
|
||||
<string>B6697A5911E7E072002ED475</string>
|
||||
<string>B6697A5A11E7E072002ED475</string>
|
||||
<string>B60EBDFB11E916AE00C1974F</string>
|
||||
<string>B60EBDFC11E916AE00C1974F</string>
|
||||
<string>B60EBE6211E91C5900C1974F</string>
|
||||
<string>B641C88811EA8DCC00B6359F</string>
|
||||
<string>B6E6A7BD11EAA92100A24C0C</string>
|
||||
<string>B64925C411EE622D0065E73A</string>
|
||||
<string>B6A0F71A11F22CD200AC3547</string>
|
||||
<string>B6FA9C5411FCE85B00F38EC1</string>
|
||||
<string>B6FA9C6611FCE9BC00F38EC1</string>
|
||||
<string>B6D1D11711FFA83D00196D8E</string>
|
||||
<string>B67B3D1212B724790033AE07</string>
|
||||
<string>B61069C412B72942007204C0</string>
|
||||
<string>B672878912B9C36800774C3B</string>
|
||||
<string>B662524E12BD9D14002B1529</string>
|
||||
<string>B6F243C512BD9E070071AF8A</string>
|
||||
<string>B6F243D812BD9E1A0071AF8A</string>
|
||||
<string>B6F243F112BDA12E0071AF8A</string>
|
||||
<string>B637CCFC12BEA992009FDC31</string>
|
||||
<string>B6C99E2712BEF7BF00C379FF</string>
|
||||
<string>B6C99E4D12BF011300C379FF</string>
|
||||
<string>B653E42C12C0701E001DCE27</string>
|
||||
<string>B673C0D212C2FEA800923CE5</string>
|
||||
<string>B673C15D12C4401E00923CE5</string>
|
||||
<string>B673C16712C4401E00923CE5</string>
|
||||
<string>B673C16812C4401E00923CE5</string>
|
||||
<string>B673C17A12C46C0800923CE5</string>
|
||||
<string>B673C1B312C5625100923CE5</string>
|
||||
<string>B673C1B412C5625100923CE5</string>
|
||||
<string>B673C1B612C5625100923CE5</string>
|
||||
<string>B673C1C812C5845400923CE5</string>
|
||||
<string>B673C24512C666C700923CE5</string>
|
||||
<string>B634EF2E12D7FC27004B2F57</string>
|
||||
<string>B634EF2F12D7FC27004B2F57</string>
|
||||
<string>B634EF3012D7FC27004B2F57</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
@ -388,16 +398,18 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {1574, 361}}</string>
|
||||
<string>{{0, 0}, {1574, 304}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>0 59 1920 1119 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
<key>Proportion</key>
|
||||
<string>361pt</string>
|
||||
<string>304pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Proportion</key>
|
||||
<string>712pt</string>
|
||||
<string>769pt</string>
|
||||
<key>Tabs</key>
|
||||
<array>
|
||||
<dict>
|
||||
@ -411,7 +423,7 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {1574, 685}}</string>
|
||||
<string>{{10, 27}, {1574, 742}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>XCDetailModule</string>
|
||||
@ -427,7 +439,9 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {1574, 685}}</string>
|
||||
<string>{{10, 27}, {1574, 742}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>0 59 1920 1119 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXProjectFindModule</string>
|
||||
@ -466,7 +480,7 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {1574, 645}}</string>
|
||||
<string>{{10, 27}, {1574, 727}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXCVSModule</string>
|
||||
@ -486,7 +500,7 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {1574, 685}}</string>
|
||||
<string>{{10, 27}, {1574, 727}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXBuildResultsModule</string>
|
||||
@ -514,11 +528,11 @@
|
||||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>B6C99DFA12BEF1DC00C379FF</string>
|
||||
<string>B634EF3212D7FC27004B2F57</string>
|
||||
<string>1CA23ED40692098700951B8B</string>
|
||||
<string>B6C99DFB12BEF1DC00C379FF</string>
|
||||
<string>B634EF3312D7FC27004B2F57</string>
|
||||
<string>B676054211DADB9000D6B66C</string>
|
||||
<string>B6C99DFC12BEF1DC00C379FF</string>
|
||||
<string>B634EF3412D7FC27004B2F57</string>
|
||||
<string>1CA23EDF0692099D00951B8B</string>
|
||||
<string>1CA23EE00692099D00951B8B</string>
|
||||
<string>1CA23EE10692099D00951B8B</string>
|
||||
@ -569,14 +583,12 @@
|
||||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {1920, 403}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>-1 59 1920 1119 0 0 1920 1178 </string>
|
||||
<string>{{0, 0}, {1920, 390}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXDebugCLIModule</string>
|
||||
<key>Proportion</key>
|
||||
<string>403pt</string>
|
||||
<string>390pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>ContentConfiguration</key>
|
||||
@ -595,8 +607,8 @@
|
||||
<string>yes</string>
|
||||
<key>sizes</key>
|
||||
<array>
|
||||
<string>{{0, 0}, {937, 328}}</string>
|
||||
<string>{{937, 0}, {983, 328}}</string>
|
||||
<string>{{0, 0}, {937, 335}}</string>
|
||||
<string>{{937, 0}, {983, 335}}</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>VerticalSplitView</key>
|
||||
@ -611,8 +623,8 @@
|
||||
<string>yes</string>
|
||||
<key>sizes</key>
|
||||
<array>
|
||||
<string>{{0, 0}, {1920, 328}}</string>
|
||||
<string>{{0, 328}, {1920, 342}}</string>
|
||||
<string>{{0, 0}, {1920, 335}}</string>
|
||||
<string>{{0, 335}, {1920, 348}}</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
@ -632,7 +644,7 @@
|
||||
<key>DebugSTDIOWindowFrame</key>
|
||||
<string>{{200, 200}, {500, 300}}</string>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 408}, {1920, 670}}</string>
|
||||
<string>{{0, 395}, {1920, 683}}</string>
|
||||
<key>PBXDebugSessionStackFrameViewKey</key>
|
||||
<dict>
|
||||
<key>DebugVariablesTableConfiguration</key>
|
||||
@ -645,17 +657,13 @@
|
||||
<real>656</real>
|
||||
</array>
|
||||
<key>Frame</key>
|
||||
<string>{{937, 0}, {983, 328}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>-1 59 1920 1119 0 0 1920 1178 </string>
|
||||
<string>{{937, 0}, {983, 335}}</string>
|
||||
</dict>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>-1 59 1920 1119 0 0 1920 1178 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXDebugSessionModule</string>
|
||||
<key>Proportion</key>
|
||||
<string>670pt</string>
|
||||
<string>683pt</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>Name</key>
|
||||
@ -673,14 +681,14 @@
|
||||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>B6C99DFD12BEF1DC00C379FF</string>
|
||||
<string>B673C0D612C2FEA800923CE5</string>
|
||||
<string>1CCC7628064C1048000F2A68</string>
|
||||
<string>1CCC7629064C1048000F2A68</string>
|
||||
<string>B6C99DFE12BEF1DC00C379FF</string>
|
||||
<string>B6C99DFF12BEF1DC00C379FF</string>
|
||||
<string>B6C99E0012BEF1DC00C379FF</string>
|
||||
<string>B6C99E0112BEF1DC00C379FF</string>
|
||||
<string>B6C99E0212BEF1DC00C379FF</string>
|
||||
<string>B673C0D712C2FEA800923CE5</string>
|
||||
<string>B673C0D812C2FEA800923CE5</string>
|
||||
<string>B673C0D912C2FEA800923CE5</string>
|
||||
<string>B673C0DA12C2FEA800923CE5</string>
|
||||
<string>B673C0DB12C2FEA800923CE5</string>
|
||||
</array>
|
||||
<key>ToolbarConfigUserDefaultsMinorVersion</key>
|
||||
<string>2</string>
|
||||
@ -714,17 +722,10 @@
|
||||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>1C530D5B069F1CE1000CFCEE</string>
|
||||
<string>B6C99E3812BEF98500C379FF</string>
|
||||
<string>B6C99E3912BEF98500C379FF</string>
|
||||
<string>B6C99E0412BEF1DC00C379FF</string>
|
||||
<string>B6C99E0612BEF1DC00C379FF</string>
|
||||
<string>B6C99E2A12BEF7BF00C379FF</string>
|
||||
<string>/Users/kelvin/Projects/2Term/2Term.xcodeproj</string>
|
||||
<string>B6C99E2B12BEF7BF00C379FF</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
<string>-1 59 1920 1119 0 0 1920 1178 </string>
|
||||
<string>0 59 1920 1119 0 0 1920 1178 </string>
|
||||
<key>WindowToolsV3</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
@ -21,9 +21,11 @@
|
||||
B61D0D63125B89E8001C713B /* EmulatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B61D0D62125B89E8001C713B /* EmulatorManager.m */; };
|
||||
B61D0D69125B8E06001C713B /* Defaults.m in Sources */ = {isa = PBXBuildFile; fileRef = B61D0D68125B8E06001C713B /* Defaults.m */; };
|
||||
B64925DA11EE6C350065E73A /* VT100.mm in Sources */ = {isa = PBXBuildFile; fileRef = B64925D911EE6C350065E73A /* VT100.mm */; };
|
||||
B653E41812C05C8C001DCE27 /* GNOConsole.mm in Sources */ = {isa = PBXBuildFile; fileRef = B653E41612C05C8C001DCE27 /* GNOConsole.mm */; };
|
||||
B669798511E6A786002ED475 /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B669798411E6A786002ED475 /* Lock.cpp */; };
|
||||
B6697A0F11E6BF95002ED475 /* CurveView.m in Sources */ = {isa = PBXBuildFile; fileRef = B6697A0E11E6BF95002ED475 /* CurveView.m */; };
|
||||
B6697A3D11E7CCA0002ED475 /* PTSE.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; };
|
||||
B673C14B12C3F0CF00923CE5 /* Apple80.mm in Sources */ = {isa = PBXBuildFile; fileRef = B673C14A12C3F0CF00923CE5 /* Apple80.mm */; };
|
||||
B676063B11DEAD3500D6B66C /* TermWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B676063A11DEAD3500D6B66C /* TermWindowController.mm */; };
|
||||
B676065111DEBAE900D6B66C /* TermWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B676065011DEBAE900D6B66C /* TermWindow.xib */; };
|
||||
B67606DA11DF6DAB00D6B66C /* EmulatorView.mm in Sources */ = {isa = PBXBuildFile; fileRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; };
|
||||
@ -85,12 +87,16 @@
|
||||
B61D0D68125B8E06001C713B /* Defaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Defaults.m; sourceTree = "<group>"; };
|
||||
B64925D811EE6C350065E73A /* VT100.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VT100.h; sourceTree = "<group>"; };
|
||||
B64925D911EE6C350065E73A /* VT100.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = VT100.mm; sourceTree = "<group>"; };
|
||||
B653E41612C05C8C001DCE27 /* GNOConsole.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GNOConsole.mm; sourceTree = "<group>"; };
|
||||
B653E41712C05C8C001DCE27 /* GNOConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GNOConsole.h; sourceTree = "<group>"; };
|
||||
B669798311E6A786002ED475 /* Lock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lock.h; sourceTree = "<group>"; };
|
||||
B669798411E6A786002ED475 /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lock.cpp; sourceTree = "<group>"; };
|
||||
B6697A0D11E6BF95002ED475 /* CurveView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CurveView.h; sourceTree = "<group>"; };
|
||||
B6697A0E11E6BF95002ED475 /* CurveView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CurveView.m; sourceTree = "<group>"; };
|
||||
B6697A3B11E7CCA0002ED475 /* PTSE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTSE.h; sourceTree = "<group>"; };
|
||||
B6697A3C11E7CCA0002ED475 /* PTSE.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PTSE.mm; sourceTree = "<group>"; };
|
||||
B673C14912C3F0CF00923CE5 /* Apple80.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Apple80.h; sourceTree = "<group>"; };
|
||||
B673C14A12C3F0CF00923CE5 /* Apple80.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Apple80.mm; sourceTree = "<group>"; };
|
||||
B676063911DEAD3500D6B66C /* TermWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TermWindowController.h; sourceTree = "<group>"; };
|
||||
B676063A11DEAD3500D6B66C /* TermWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TermWindowController.mm; sourceTree = "<group>"; };
|
||||
B676064D11DEBAE300D6B66C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/TermWindow.xib; sourceTree = "<group>"; };
|
||||
@ -248,6 +254,8 @@
|
||||
B6697A3A11E7CC80002ED475 /* Emulators */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B653E41612C05C8C001DCE27 /* GNOConsole.mm */,
|
||||
B653E41712C05C8C001DCE27 /* GNOConsole.h */,
|
||||
B699A08B11E5720F00F54CC8 /* Emulator.h */,
|
||||
B61D0D62125B89E8001C713B /* EmulatorManager.m */,
|
||||
B6697A3B11E7CCA0002ED475 /* PTSE.h */,
|
||||
@ -258,6 +266,8 @@
|
||||
B699A09011E572A300F54CC8 /* VT52.mm */,
|
||||
B64925D811EE6C350065E73A /* VT100.h */,
|
||||
B64925D911EE6C350065E73A /* VT100.mm */,
|
||||
B673C14912C3F0CF00923CE5 /* Apple80.h */,
|
||||
B673C14A12C3F0CF00923CE5 /* Apple80.mm */,
|
||||
);
|
||||
name = Emulators;
|
||||
sourceTree = "<group>";
|
||||
@ -347,6 +357,8 @@
|
||||
B61D0D60125B7ACA001C713B /* NewTerminalWindowController.m in Sources */,
|
||||
B61D0D63125B89E8001C713B /* EmulatorManager.m in Sources */,
|
||||
B61D0D69125B8E06001C713B /* Defaults.m in Sources */,
|
||||
B653E41812C05C8C001DCE27 /* GNOConsole.mm in Sources */,
|
||||
B673C14B12C3F0CF00923CE5 /* Apple80.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -61,6 +61,13 @@ enum {
|
||||
return ws;
|
||||
}
|
||||
|
||||
-(void)initTerm: (struct termios *)term
|
||||
{
|
||||
// Control-U is used by the up-arrow key.
|
||||
term->c_cc[VKILL] = CTRL('X');
|
||||
}
|
||||
|
||||
|
||||
-(void)processCharacter:(uint8_t)c screen:(Screen *)screen output:(OutputChannel *)output
|
||||
{
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
//
|
||||
|
||||
#include <sys/ttycom.h>
|
||||
#include <sys/termios.h>
|
||||
|
||||
@class NSEvent;
|
||||
@class NSMenu;
|
||||
@ -46,4 +47,8 @@ class OutputChannel;
|
||||
|
||||
-(struct winsize)defaultSize;
|
||||
|
||||
@optional
|
||||
|
||||
-(void)initTerm: (struct termios *)term;
|
||||
|
||||
@end
|
||||
|
@ -194,11 +194,11 @@
|
||||
screenRect.origin.y = 0;
|
||||
}
|
||||
|
||||
unsigned minX = floor(screenRect.origin.x / _charWidth);
|
||||
unsigned maxX = ceil((screenRect.origin.x + screenRect.size.width) / _charWidth);
|
||||
int minX = floor(screenRect.origin.x / _charWidth);
|
||||
int maxX = ceil((screenRect.origin.x + screenRect.size.width) / _charWidth);
|
||||
|
||||
unsigned minY = floor(screenRect.origin.y / _charHeight);
|
||||
unsigned maxY = ceil((screenRect.origin.y + screenRect.size.height) / _charHeight);
|
||||
int minY = floor(screenRect.origin.y / _charHeight);
|
||||
int maxY = ceil((screenRect.origin.y + screenRect.size.height) / _charHeight);
|
||||
|
||||
// x/y are 0-indexed here.
|
||||
|
||||
|
12
GNOConsole.h
12
GNOConsole.h
@ -10,22 +10,20 @@
|
||||
|
||||
#import "Emulator.h"
|
||||
#include "iGeometry.h"
|
||||
|
||||
#include "Screen.h"
|
||||
|
||||
|
||||
@interface GNOConsole : NSObject <Emulator>
|
||||
{
|
||||
unsigned _state;
|
||||
|
||||
TextPort _textPort;
|
||||
|
||||
|
||||
iPoint _dca;
|
||||
|
||||
int _vp[4];
|
||||
#ifdef __cplusplus
|
||||
class TextPort;
|
||||
TextPort *_textPort;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -156,11 +156,6 @@ enum {
|
||||
{
|
||||
_state = StateText;
|
||||
|
||||
if (_textPort)
|
||||
{
|
||||
delete _textPort;
|
||||
_textPort = NULL;
|
||||
}
|
||||
|
||||
// set flags to plain text.
|
||||
}
|
||||
@ -177,10 +172,24 @@ enum {
|
||||
return ws;
|
||||
}
|
||||
|
||||
-(void)dealloc
|
||||
-(void)initTerm: (struct termios *)term
|
||||
{
|
||||
delete _textPort;
|
||||
[super dealloc];
|
||||
// Control-U is used by the up-arrow key.
|
||||
term->c_cc[VKILL] = CTRL('X');
|
||||
}
|
||||
|
||||
-(id)init
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
_textPort.frame = iRect(0, 0, 24, 80);
|
||||
_textPort.cursor = iPoint(0,0);
|
||||
|
||||
_textPort.scroll = true;
|
||||
_textPort.advanceCursor = true;
|
||||
_textPort.leftMargin = TextPort::MarginWrap;
|
||||
_textPort.rightMargin = TextPort::MarginWrap;
|
||||
}
|
||||
}
|
||||
|
||||
-(void)processCharacter:(uint8_t)c screen:(Screen *)screen output:(OutputChannel *)output
|
||||
@ -215,34 +224,35 @@ enum {
|
||||
break;
|
||||
|
||||
case CTRL('H'):
|
||||
// todo -- honor the viewport.
|
||||
screen->decrementX(true);
|
||||
screen->decrementX(&_textPort);
|
||||
//screen->decrementX(true);
|
||||
break;
|
||||
|
||||
case CTRL('I'):
|
||||
// tab
|
||||
screen->tabTo((screen->x() + 8) & ~0x07);
|
||||
screen->tabTo(&_textPort, (screen->x() + 8) & ~0x07);
|
||||
//screen->tabTo((screen->x() + 8) & ~0x07);
|
||||
break;
|
||||
|
||||
case CTRL('J'):
|
||||
// down 1 line.
|
||||
screen->lineFeed();
|
||||
screen->lineFeed(&_textPort);
|
||||
break;
|
||||
|
||||
case CTRL('K'):
|
||||
// clear to end of screen
|
||||
screen->erase(Screen::EraseAfterCursor);
|
||||
screen->erase(&_textPort, Screen::EraseAfterCursor);
|
||||
break;
|
||||
|
||||
case CTRL('L'):
|
||||
// clear screen, go home.
|
||||
screen->erase(Screen::EraseAll);
|
||||
screen->setCursor(0, 0, true, true);
|
||||
screen->erase(&_textPort, Screen::EraseAll);
|
||||
screen->setCursor(&_textPort.origin, true);
|
||||
break;
|
||||
|
||||
case CTRL('M'):
|
||||
// move to left edge.
|
||||
screen->setX(0, true);
|
||||
screen->setX(&_textPort, 0);
|
||||
break;
|
||||
|
||||
case CTRL('N'):
|
||||
@ -257,25 +267,25 @@ enum {
|
||||
|
||||
case CTRL('Q'):
|
||||
// insert line.
|
||||
//TODO
|
||||
screen->insertLine(&_textPort, screen->y() - _textPort.origin.y);
|
||||
break;
|
||||
case CTRL('R'):
|
||||
// delete line
|
||||
// TODO
|
||||
screen->deleteLine(&_textPort, screen->y() - _textPort.origin.y);
|
||||
break;
|
||||
|
||||
case CTRL('U'):
|
||||
// right arrow.
|
||||
screen->incrementX(true);
|
||||
screen->incrementX(&_textPort, true);
|
||||
break;
|
||||
|
||||
case CTRL('V'):
|
||||
// scroll down 1 line.
|
||||
// TODO
|
||||
screen->insertLine(&_textPort, 0);
|
||||
break;
|
||||
case CTRL('W'):
|
||||
// scroll up 1 line.
|
||||
// TODO
|
||||
screen->deleteLine(&_textPort, 0);
|
||||
break;
|
||||
|
||||
case CTRL('X'):
|
||||
@ -285,11 +295,11 @@ enum {
|
||||
|
||||
case CTRL('Y'):
|
||||
// cursor home
|
||||
screen->setCursor(0, 0, true, true);
|
||||
screen->setCursor(_textPort.frame.origin, true, true);
|
||||
break;
|
||||
case CTRL('Z'):
|
||||
// clear entire line
|
||||
screen->erase(Screen::EraseLineAll);
|
||||
screen->erase(&_textPort, Screen::EraseLineAll);
|
||||
break;
|
||||
|
||||
case CTRL('['):
|
||||
@ -300,12 +310,12 @@ enum {
|
||||
|
||||
case CTRL('\\'):
|
||||
// move cursor 1 character to the right
|
||||
screen->incrementX(true);
|
||||
screen->incrementX(&_textPort);
|
||||
break;
|
||||
|
||||
case CTRL(']'):
|
||||
// clear to end of line.
|
||||
screen->erase(Screen::EraseLineAfterCursor);
|
||||
screen->erase(&_textPort, Screen::EraseLineAfterCursor);
|
||||
break;
|
||||
|
||||
case CTRL('^'):
|
||||
@ -315,13 +325,13 @@ enum {
|
||||
|
||||
case CTRL('_'):
|
||||
// move up 1 line
|
||||
screen->decrementY(true);
|
||||
screen->decrementY(&_textPort, true);
|
||||
break;
|
||||
|
||||
default:
|
||||
if (c >= 0x20 && c < 0x7f)
|
||||
{
|
||||
screen->putc(c);
|
||||
screen->putc(&_textPort, c);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -389,22 +399,15 @@ enum {
|
||||
if (_vp[1] <= _vp[0]) _vp[1] = 80;
|
||||
if (_vp[3] <= _vp[2]) _vp[3] = 24;
|
||||
|
||||
if (_vp[0] == 0 && _vp[1] == 80 && _vp[2] == 0 && _vp[3] == 24)
|
||||
{
|
||||
delete _textPort;
|
||||
_textPort = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_textPort) _textPort = new TextPort;
|
||||
_textPort->frame = iRect(_vp[0], _vp[2], _vp[1] - _vp[0], _vp[3] - _vp[2]);
|
||||
|
||||
_textPort->rightMargin = TextPort::RMTruncate;
|
||||
_textPort->advanceCursor = true;
|
||||
_textPort->scroll = true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
_textPort.frame = iRect(_vp[0], _vp[2], _vp[1] - _vp[0], _vp[3] - _vp[2]);
|
||||
|
||||
|
||||
|
||||
// move the cursor to the top left
|
||||
// gnome clamps the horizontal, doesn't adjust the vertical.
|
||||
screen->setCursor(_textPort, 0, 0);
|
||||
|
||||
|
||||
_state = StateText;
|
||||
|
||||
|
6
PTSE.mm
6
PTSE.mm
@ -72,6 +72,12 @@ enum {
|
||||
}
|
||||
|
||||
|
||||
-(void)initTerm: (struct termios *)term
|
||||
{
|
||||
// Control-U is used by the up-arrow key.
|
||||
term->c_cc[VKILL] = CTRL('X');
|
||||
}
|
||||
|
||||
-(void)processCharacter:(uint8_t)c screen:(Screen *)screen output:(OutputChannel *)output
|
||||
{
|
||||
|
||||
|
474
Screen.cpp
474
Screen.cpp
@ -11,11 +11,20 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
iPoint TextPort::absoluteCursor() const
|
||||
{
|
||||
return iPoint(frame.origin.x + cursor.x, frame.origin.y + cursor.y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Screen::Screen(unsigned height, unsigned width)
|
||||
{
|
||||
|
||||
_port.frame = iRect(0, 0, width, height);
|
||||
_port.rightMargin = TextPort::RMTruncate;
|
||||
_port.rightMargin = TextPort::MarginTruncate;
|
||||
_port.rightMargin = TextPort::MarginTruncate;
|
||||
|
||||
_port.advanceCursor = true;
|
||||
_port.scroll = true;
|
||||
|
||||
@ -42,7 +51,7 @@ void Screen::beginUpdate()
|
||||
{
|
||||
_lock.lock();
|
||||
_updates.clear();
|
||||
_updateCursor = _cursor;
|
||||
_updateCursor = cursor();
|
||||
}
|
||||
|
||||
iRect Screen::endUpdate()
|
||||
@ -52,10 +61,11 @@ iRect Screen::endUpdate()
|
||||
int minX = width();
|
||||
int minY = height();
|
||||
|
||||
iPoint c = cursor();
|
||||
|
||||
if (_cursor != _updateCursor)
|
||||
if (c != _updateCursor)
|
||||
{
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(c);
|
||||
_updates.push_back(_updateCursor);
|
||||
}
|
||||
|
||||
@ -88,145 +98,268 @@ void Screen::clearFlagBit(uint8_t bit)
|
||||
}
|
||||
|
||||
|
||||
void Screen::putc(uint8_t c, bool incrementX)
|
||||
|
||||
|
||||
|
||||
void Screen::putc(TextPort *textPort, uint8_t c)
|
||||
{
|
||||
if (_cursor.x < width())
|
||||
/*
|
||||
* textport must be valid.
|
||||
* cursor must be within textport.
|
||||
*/
|
||||
|
||||
|
||||
if (!textPort) textPort = &_port;
|
||||
iPoint cursor = textPort->absoluteCursor();
|
||||
|
||||
// right margin is a special case.
|
||||
if (textPort->cursor.x == textPort->frame.width() -1)
|
||||
{
|
||||
_updates.push_back(_cursor);
|
||||
|
||||
_screen[_cursor.y][_cursor.x] = CharInfo(c, _flag);
|
||||
|
||||
if (incrementX && _cursor.x < width() - 1) ++_cursor.x;
|
||||
}
|
||||
}
|
||||
|
||||
void Screen::deletec()
|
||||
{
|
||||
// delete character at cursor.
|
||||
// move following character up
|
||||
// set final character to ' ' (retaining flags from previous char)
|
||||
|
||||
if (_cursor.x >= width()) return;
|
||||
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
|
||||
|
||||
CharInfoIterator end = _screen[_cursor.y].end() - 1;
|
||||
CharInfoIterator iter = _screen[_cursor.y].begin() + _cursor.x;
|
||||
|
||||
|
||||
for ( ; iter != end; ++iter)
|
||||
{
|
||||
iter[0] = iter[1];
|
||||
|
||||
if (textPort->rightMargin == TextPort::MarginTruncate) return;
|
||||
if (textPort->rightMargin == TextPort::MarginOverwrite)
|
||||
{
|
||||
_updates.push_back(cursor);
|
||||
_screen[cursor.y][cursor.x] = CharInfo(c, _flag);
|
||||
return;
|
||||
}
|
||||
//if (textPort->rightMargin == TextPort::MarginWrap)
|
||||
}
|
||||
// retain the flags previously there.
|
||||
end->c = ' ';
|
||||
}
|
||||
|
||||
void Screen::insertc(uint8_t c)
|
||||
{
|
||||
// insert character at cursor.
|
||||
// move following characters up (retaining flags).
|
||||
|
||||
if (_cursor.x >= width()) return;
|
||||
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
|
||||
CharInfoIterator end = _screen[_cursor.y].end() - 1;
|
||||
CharInfoIterator iter = _screen[_cursor.y].begin() + _cursor.x;
|
||||
|
||||
for ( ; iter != end; ++iter)
|
||||
_updates.push_back(cursor);
|
||||
_screen[cursor.y][cursor.x] = CharInfo(c, _flag);
|
||||
|
||||
if (textPort->advanceCursor)
|
||||
{
|
||||
iter[1] = iter[0];
|
||||
incrementX(textPort);
|
||||
}
|
||||
|
||||
iter->c = ' ';
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Screen::tabTo(unsigned xPos)
|
||||
|
||||
void Screen::tabTo(TextPort *textPort, unsigned xPos)
|
||||
{
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
CharInfo clear(' ', _flag);
|
||||
CharInfoIterator iter;
|
||||
iPoint cursor = textPort->absoluteCursor();
|
||||
|
||||
xPos = std::min((int)xPos, width() - 1);
|
||||
xPos = std::min((int)xPos, textPort->frame.width() - 1);
|
||||
|
||||
_updates.push_back(cursor);
|
||||
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(xPos, _cursor.y));
|
||||
|
||||
for (unsigned x = _cursor.x; x < xPos; ++x)
|
||||
for (unsigned x = textPort->cursor.x; x < xPos; ++x)
|
||||
{
|
||||
_screen[_cursor.y][x] = clear;
|
||||
|
||||
_screen[cursor.y][x + textPort->frame.minX()] = clear;
|
||||
}
|
||||
_cursor.x = xPos;
|
||||
|
||||
textPort->cursor.x += xPos;
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
|
||||
_updates.push_back(_port.cursor);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Screen::setX(int x, bool clamp)
|
||||
#pragma mark -
|
||||
#pragma mark Cursor manipulation.
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* sets cursor.x within the textport.
|
||||
* if x is outside the textport and clampX is true, it will be clamped to 0/width-1
|
||||
* if x is outside the textport and clampX is false, x will not be updated.
|
||||
*
|
||||
* returns the new cursor.x
|
||||
*/
|
||||
|
||||
int Screen::setX(TextPort *textPort, int x)
|
||||
{
|
||||
// honors clampX.
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
bool clamp = textPort->clampX;
|
||||
|
||||
if (x < 0)
|
||||
{
|
||||
if (clamp) _cursor.x = 0;
|
||||
return;
|
||||
if (clamp) textPort->cursor.x = 0;
|
||||
}
|
||||
if (x >= width())
|
||||
else if (x >= textPort->frame.width())
|
||||
{
|
||||
if (clamp) _cursor.x = width() - 1;
|
||||
return;
|
||||
if (clamp) textPort->cursor.x = textPort->frame.width() - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
textPort->cursor.x = x;
|
||||
}
|
||||
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
|
||||
_cursor.x = x;
|
||||
return textPort->cursor.x;
|
||||
}
|
||||
|
||||
/*
|
||||
* sets cursor.y within the textport.
|
||||
* if y is outside the textport and clampY is true, it will be clamped to 0/height-1
|
||||
* if y is outside the textport and clampY is false, y will not be updated.
|
||||
*
|
||||
* returns the new cursor.y
|
||||
*/
|
||||
|
||||
void Screen::setY(int y, bool clamp)
|
||||
int Screen::setY(TextPort *textPort, int y)
|
||||
{
|
||||
// honors clampY.
|
||||
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
bool clamp = textPort->clampY;
|
||||
|
||||
if (y < 0)
|
||||
{
|
||||
if (clamp) _cursor.y = 0;
|
||||
return;
|
||||
if (clamp) textPort->cursor.y = 0;
|
||||
}
|
||||
if (y >= height())
|
||||
else if (y >= textPort->frame.height())
|
||||
{
|
||||
if (clamp) _cursor.y = height() - 1;
|
||||
return;
|
||||
if (clamp) textPort->cursor.y = textPort->frame.height() - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
textPort->cursor.y = y;
|
||||
}
|
||||
|
||||
_cursor.y = y;
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
|
||||
return textPort->cursor.y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int Screen::incrementX(bool clamp)
|
||||
/*
|
||||
* increments cursor.x within the textport.
|
||||
* if rightMargin wraps, it will set x = 0 and incrementY (which may scroll)
|
||||
* if rightMargin does not wrap, it will not be updated.
|
||||
*
|
||||
* returns the new cursor.x
|
||||
*/
|
||||
int Screen::incrementX(TextPort *textPort)
|
||||
{
|
||||
setX(_cursor.x + 1, clamp);
|
||||
return _cursor.x;
|
||||
// honors wrap, scroll.
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
|
||||
if (textPort->cursor.x == textPort->frame.width() - 1)
|
||||
{
|
||||
if (textPort->rightMargin == TextPort::MarginWrap)
|
||||
{
|
||||
textPort->cursor.x = 0;
|
||||
incrementY(textPort);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textPort->cursor.x++;
|
||||
}
|
||||
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
|
||||
return textPort->cursor.x;
|
||||
}
|
||||
|
||||
int Screen::decrementX(bool clamp)
|
||||
/*
|
||||
* decrements cursor.x within the textport.
|
||||
* if leftMargin wraps, it will set x = width - 1 and decrementY (which may scroll)
|
||||
* if leftMargin does not wrap, it will not be updated.
|
||||
*
|
||||
* returns the new cursor.x
|
||||
*/
|
||||
|
||||
int Screen::decrementX(TextPort *textPort)
|
||||
{
|
||||
setX(_cursor.x - 1, clamp);
|
||||
return _cursor.x;
|
||||
// honors wrap, scroll.
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
|
||||
if (textPort->cursor.x == 0)
|
||||
{
|
||||
if (textPort->leftMargin == TextPort::MarginWrap)
|
||||
{
|
||||
textPort->cursor.x = textPort->frame.width() - 1;
|
||||
decrementY(textPort);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textPort->cursor.x--;
|
||||
}
|
||||
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
|
||||
return textPort->cursor.x;
|
||||
|
||||
}
|
||||
|
||||
int Screen::incrementY(bool clamp)
|
||||
/*
|
||||
* increment cursor.y
|
||||
* this is similar to lineFeed, except that it honors the scroll flag
|
||||
* at the bottom of the screen.
|
||||
* returns the new cursor.y
|
||||
*/
|
||||
|
||||
int Screen::incrementY(TextPort *textPort)
|
||||
{
|
||||
setY(_cursor.y + 1, clamp);
|
||||
return _cursor.y;
|
||||
// similar to linefeed, but honors scroll.
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
if (textPort->scroll)
|
||||
return lineFeed(textPort);
|
||||
|
||||
if (textPort->cursor.y < textPort->frame.height() - 1)
|
||||
return lineFeed(textPort);
|
||||
|
||||
return textPort->cursor.y;
|
||||
}
|
||||
|
||||
int Screen::decrementY(bool clamp)
|
||||
|
||||
/*
|
||||
* decrement cursor.y
|
||||
* this is similar to revereseLineFeed, except that it honors the scroll flag
|
||||
* at the top of the screen.
|
||||
* returns the new cursor.y
|
||||
*/
|
||||
int Screen::decrementY(TextPort *textPort)
|
||||
{
|
||||
setY(_cursor.y - 1, clamp);
|
||||
return _cursor.y;
|
||||
// similar to reverseLineFeed, but will not scroll.
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
if (!textPort) textPort = &_port;
|
||||
|
||||
if (textPort->scroll)
|
||||
return lineFeed(textPort);
|
||||
|
||||
|
||||
if (textPort->cursor.y > 0)
|
||||
return reverseLineFeed(textPort);
|
||||
|
||||
|
||||
return textPort->cursor.y;
|
||||
}
|
||||
|
||||
|
||||
void Screen::setCursor(TextPort *textPort,iPoint point)
|
||||
{
|
||||
setX(textPort, point.x);
|
||||
setY(textPort, point.y);
|
||||
}
|
||||
|
||||
void Screen::setCursor(TextPort *textPort, int x, int y)
|
||||
{
|
||||
setX(textPort, x);
|
||||
setY(textPort, y);
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Erase
|
||||
|
||||
void Screen::erase(EraseRegion region)
|
||||
{
|
||||
@ -251,13 +384,13 @@ void Screen::erase(EraseRegion region)
|
||||
// TODO -- be smart and check if cursor is at x = 0 (or x = _width - 1)
|
||||
if (region == EraseBeforeCursor)
|
||||
{
|
||||
ScreenIterator end = _screen.begin() + _cursor.y - 1;
|
||||
ScreenIterator end = _screen.begin() + y() - 1;
|
||||
for (screenIter = _screen.begin(); screenIter < end; ++screenIter)
|
||||
{
|
||||
std::fill(screenIter->begin(), screenIter->end(), CharInfo(0,0));
|
||||
}
|
||||
_updates.push_back(iPoint(0,0));
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
_updates.push_back(iPoint(width() - 1, y()));
|
||||
|
||||
region = EraseLineBeforeCursor;
|
||||
}
|
||||
@ -265,46 +398,42 @@ void Screen::erase(EraseRegion region)
|
||||
if (region == EraseAfterCursor)
|
||||
{
|
||||
ScreenIterator end = _screen.end();
|
||||
for (screenIter = _screen.begin() + _cursor.y + 1; screenIter < end; ++screenIter)
|
||||
for (screenIter = _screen.begin() + y() + 1; screenIter < end; ++screenIter)
|
||||
{
|
||||
std::fill(screenIter->begin(), screenIter->end(), CharInfo(0,0));
|
||||
}
|
||||
_updates.push_back(iPoint(0,_cursor.y + 1));
|
||||
_updates.push_back(iPoint(0, y() + 1));
|
||||
_updates.push_back(iPoint(width() - 1, height() - 1));
|
||||
|
||||
region = EraseLineAfterCursor;
|
||||
}
|
||||
|
||||
if (region == EraseLineAll)
|
||||
{
|
||||
|
||||
int y = _cursor.y;
|
||||
std::fill(_screen[y].begin(), _screen[y].end(), CharInfo(0,0));
|
||||
{
|
||||
std::fill(_screen[y()].begin(), _screen[y()].end(), CharInfo(0,0));
|
||||
|
||||
_updates.push_back(iPoint(0, _cursor.y));
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
_updates.push_back(iPoint(0, y()));
|
||||
_updates.push_back(iPoint(width() - 1, y()));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (region == EraseLineBeforeCursor)
|
||||
{
|
||||
int y = _cursor.y;
|
||||
std::fill(_screen[y].begin(), _screen[y].begin() + _cursor.x + 1, CharInfo(0,0));
|
||||
std::fill(_screen[y()].begin(), _screen[y()].begin() + x() + 1, CharInfo(0,0));
|
||||
|
||||
_updates.push_back(iPoint(0, _cursor.y));
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(0, y()));
|
||||
_updates.push_back(cursor());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (region == EraseLineAfterCursor)
|
||||
{
|
||||
int y = _cursor.y;
|
||||
std::fill(_screen[y].begin() + _cursor.x, _screen[y].end(), CharInfo(0,0));
|
||||
std::fill(_screen[y()].begin() + x(), _screen[y()].end(), CharInfo(0,0));
|
||||
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
_updates.push_back(cursor());
|
||||
_updates.push_back(iPoint(width() - 1, y()));
|
||||
|
||||
}
|
||||
|
||||
@ -315,13 +444,13 @@ void Screen::eraseLine()
|
||||
{
|
||||
// erases everything to the right of, and including, the cursor
|
||||
|
||||
for (CharInfoIterator ciIter = _screen[_cursor.y].begin() + _cursor.x; ciIter < _screen[_cursor.y].end(); ++ciIter)
|
||||
for (CharInfoIterator ciIter = _screen[y()].begin() + x(); ciIter < _screen[y()].end(); ++ciIter)
|
||||
{
|
||||
*ciIter = CharInfo(0, _flag);
|
||||
}
|
||||
|
||||
_updates.push_back(_cursor);
|
||||
_updates.push_back(iPoint(width() - 1, _cursor.y));
|
||||
_updates.push_back(cursor());
|
||||
_updates.push_back(iPoint(width() - 1, y()));
|
||||
}
|
||||
void Screen::eraseScreen()
|
||||
{
|
||||
@ -329,9 +458,9 @@ void Screen::eraseScreen()
|
||||
|
||||
eraseLine();
|
||||
|
||||
if (_cursor.y == height() -1) return;
|
||||
if (y() == height() -1) return;
|
||||
|
||||
for (ScreenIterator iter = _screen.begin() + _cursor.y; iter < _screen.end(); ++iter)
|
||||
for (ScreenIterator iter = _screen.begin() + y(); iter < _screen.end(); ++iter)
|
||||
{
|
||||
for (CharInfoIterator ciIter = iter->begin(); ciIter < iter->end(); ++ciIter)
|
||||
{
|
||||
@ -340,7 +469,7 @@ void Screen::eraseScreen()
|
||||
|
||||
}
|
||||
|
||||
_updates.push_back(iPoint(0, _cursor.y + 1));
|
||||
_updates.push_back(iPoint(0, y() + 1));
|
||||
_updates.push_back(iPoint(width() - 1, height() - 1));
|
||||
}
|
||||
|
||||
@ -371,53 +500,87 @@ void Screen::lineFeed()
|
||||
{
|
||||
// moves the screen up one row, inserting a blank line at the bottom.
|
||||
|
||||
if (_cursor.y == height() - 1)
|
||||
if (y() == height() - 1)
|
||||
{
|
||||
deleteLine(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_cursor.y++;
|
||||
_port.cursor.y++;
|
||||
}
|
||||
}
|
||||
|
||||
void Screen::lineFeed(TextPort *textPort)
|
||||
/*
|
||||
* perform a line feed. This increments Y. If Y was at the bottom of the
|
||||
* textPort, the textPort scrolls.
|
||||
*
|
||||
*/
|
||||
int Screen::lineFeed(TextPort *textPort)
|
||||
{
|
||||
int maxY;
|
||||
|
||||
if (!textPort)
|
||||
{
|
||||
lineFeed();
|
||||
return;
|
||||
return y();
|
||||
}
|
||||
|
||||
maxY = textPort->frame.maxY();
|
||||
|
||||
maxY = std::min(maxY, (int)height());
|
||||
|
||||
if (_cursor.y < maxY)
|
||||
|
||||
if (textPort->cursor.y == textPort->frame.height() - 1)
|
||||
{
|
||||
_cursor.y++;
|
||||
deleteLine(textPort, 0);
|
||||
}
|
||||
else if (textPort->scroll)
|
||||
else
|
||||
{
|
||||
_cursor.y++;
|
||||
textPort->cursor.y++;
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
}
|
||||
|
||||
return textPort->cursor.y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* perform a reverse line feed. This increments Y. If Y was at the top of the
|
||||
* textPort, the textPort scrolls.
|
||||
*
|
||||
*/
|
||||
int Screen::reverseLineFeed(TextPort *textPort)
|
||||
{
|
||||
|
||||
if (!textPort)
|
||||
{
|
||||
reverseLineFeed();
|
||||
return y();
|
||||
}
|
||||
|
||||
|
||||
if (textPort->cursor.y == 0)
|
||||
{
|
||||
insertLine(textPort, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
textPort->cursor.y--;
|
||||
if (textPort != &_port) _port.cursor = textPort->absoluteCursor();
|
||||
}
|
||||
|
||||
return textPort->cursor.y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Screen::reverseLineFeed()
|
||||
{
|
||||
// moves the cursor down one row, inserting a blank line at the top.
|
||||
|
||||
if (_cursor.y == 0)
|
||||
if (y() == 0)
|
||||
{
|
||||
insertLine(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_cursor.y--;
|
||||
_port.cursor.y--;
|
||||
}
|
||||
|
||||
}
|
||||
@ -452,37 +615,30 @@ void Screen::insertLine(unsigned line)
|
||||
|
||||
void Screen::insertLine(TextPort *textPort, unsigned line)
|
||||
{
|
||||
iRect frame;
|
||||
CharInfo ci;
|
||||
|
||||
int minY;
|
||||
int maxY;
|
||||
int minX;
|
||||
int maxX;
|
||||
|
||||
if (!textPort) return insertLine(line);
|
||||
|
||||
frame = textPort->frame;
|
||||
iRect frame(textPort->frame);
|
||||
|
||||
minY = frame.minY();
|
||||
maxY = frame.maxY();
|
||||
int minY = frame.minY();
|
||||
int maxY = frame.maxY();
|
||||
|
||||
minX = frame.minX();
|
||||
minY = frame.maxX();
|
||||
int minX = frame.minX();
|
||||
int maxX = frame.maxX();
|
||||
|
||||
if (line < 0) return;
|
||||
if (line >= frame.height()) return;
|
||||
|
||||
// move all subsequent lines forward by 1.
|
||||
for (int y = maxY - 2; y >= minY + line; --y)
|
||||
for (int y = frame.height() - 2; y >= line; --y)
|
||||
{
|
||||
CharInfoIterator iter;
|
||||
CharInfoIterator end;
|
||||
|
||||
iter = _screen[y].begin() + minX;
|
||||
end = _screen[y].begin() + maxX;
|
||||
iter = _screen[minY + y].begin();
|
||||
|
||||
std::copy(iter, end, _screen[y + 1].begin() + minX);
|
||||
std::copy(iter +minX, iter + maxX, _screen[minY + y + 1].begin() + minX);
|
||||
}
|
||||
|
||||
// clear the line.
|
||||
@ -524,37 +680,30 @@ void Screen::deleteLine(unsigned line)
|
||||
|
||||
void Screen::deleteLine(TextPort *textPort, unsigned line)
|
||||
{
|
||||
iRect frame;
|
||||
CharInfo ci;
|
||||
|
||||
int minY;
|
||||
int maxY;
|
||||
int minX;
|
||||
int maxX;
|
||||
|
||||
if (!textPort) return deleteLine(line);
|
||||
|
||||
frame = textPort->frame;
|
||||
iRect frame(textPort->frame);
|
||||
|
||||
minY = frame.minY();
|
||||
maxY = frame.maxY();
|
||||
int minY = frame.minY();
|
||||
int maxY = frame.maxY();
|
||||
|
||||
minX = frame.minX();
|
||||
minY = frame.maxX();
|
||||
int minX = frame.minX();
|
||||
int maxX = frame.maxX();
|
||||
|
||||
if (line < 0) return;
|
||||
if (line >= frame.height()) return;
|
||||
|
||||
// move all subsequent lines back by 1.
|
||||
for (int y = minY + line; y < maxY - 2; ++y)
|
||||
for (int y = line; y < frame.height() - 2; ++y)
|
||||
{
|
||||
CharInfoIterator iter;
|
||||
CharInfoIterator end;
|
||||
|
||||
iter = _screen[y + 1].begin() + minX;
|
||||
end = _screen[y + 1].begin() + maxX;
|
||||
iter = _screen[minY + y + 1].begin();
|
||||
|
||||
std::copy(iter, end, _screen[y].begin() + minX);
|
||||
std::copy(iter + minX, iter + maxX, _screen[minY + y].begin() + minX);
|
||||
}
|
||||
|
||||
// clear the last line.
|
||||
@ -571,6 +720,7 @@ void Screen::deleteLine(TextPort *textPort, unsigned line)
|
||||
|
||||
void Screen::setSize(unsigned w, unsigned h)
|
||||
{
|
||||
// TODO -- have separate minimum size for textport?
|
||||
|
||||
if ((height() == h) && (width() == w)) return;
|
||||
|
||||
@ -599,8 +749,8 @@ void Screen::setSize(unsigned w, unsigned h)
|
||||
_port.frame.size = iSize(w, h);
|
||||
|
||||
|
||||
if (_cursor.y >= h) _cursor.y = h - 1;
|
||||
if (_cursor.x >= w) _cursor.x = w - 1;
|
||||
if (_port.cursor.y >= h) _port.cursor.y = h - 1;
|
||||
if (_port.cursor.x >= w) _port.cursor.x = w - 1;
|
||||
|
||||
//fprintf(stderr, "setSize(%u, %u)\n", width, height);
|
||||
|
||||
|
52
Screen.h
52
Screen.h
@ -30,23 +30,31 @@ typedef struct CharInfo {
|
||||
|
||||
typedef struct TextPort {
|
||||
|
||||
enum RightMargin {
|
||||
RMTruncate,
|
||||
RMWrap,
|
||||
RMOverwrite
|
||||
enum MarginBehavior {
|
||||
MarginTruncate,
|
||||
MarginWrap,
|
||||
MarginOverwrite
|
||||
};
|
||||
|
||||
|
||||
|
||||
iRect frame;
|
||||
iPoint cursor;
|
||||
|
||||
|
||||
RightMargin rightMargin;
|
||||
MarginBehavior leftMargin;
|
||||
MarginBehavior rightMargin;
|
||||
|
||||
bool advanceCursor;
|
||||
//bool lineFeed;
|
||||
bool scroll;
|
||||
|
||||
// clamp setCursor calls.
|
||||
bool clampX;
|
||||
bool clampY;
|
||||
|
||||
|
||||
iPoint absoluteCursor() const;
|
||||
|
||||
};
|
||||
|
||||
@ -99,9 +107,24 @@ public:
|
||||
void setX(int x, bool clamp = true);
|
||||
void setY(int y, bool clamp = true);
|
||||
|
||||
|
||||
void setCursor(iPoint point, bool clampX = true, bool clampY = true);
|
||||
void setCursor(int x, int y, bool clampX = true, bool clampY = true);
|
||||
|
||||
|
||||
int setX(TextPort *textPort, int x);
|
||||
int setY(TextPort *textPort, int y);
|
||||
|
||||
int incrementX(TextPort *textPort);
|
||||
int incrementY(TextPort *textPort);
|
||||
|
||||
int decrementX(TextPort *textPort);
|
||||
int decrementY(TextPort *textPort);
|
||||
|
||||
void setCursor(TextPort *textPort,iPoint point);
|
||||
void setCursor(TextPort *textPort, int x, int y);
|
||||
|
||||
|
||||
|
||||
void setFlag(uint8_t flag);
|
||||
void setFlagBit(uint8_t bit);
|
||||
@ -109,13 +132,16 @@ public:
|
||||
|
||||
|
||||
void putc(uint8_t c, bool incrementX = true);
|
||||
void putc(TextPort *textPort, uint8_t c);
|
||||
|
||||
|
||||
CharInfo getc(int x, int y) const;
|
||||
|
||||
void deletec();
|
||||
void insertc(uint8_t c);
|
||||
|
||||
void tabTo(unsigned x);
|
||||
|
||||
void tabTo(TextPort *textPort, unsigned x);
|
||||
|
||||
|
||||
void erase(EraseRegion);
|
||||
@ -127,10 +153,10 @@ public:
|
||||
|
||||
|
||||
void lineFeed();
|
||||
void lineFeed(TextPort *textPort);
|
||||
int lineFeed(TextPort *textPort);
|
||||
|
||||
void reverseLineFeed();
|
||||
void reverseLineFeed(TextPort *textPort);
|
||||
int reverseLineFeed(TextPort *textPort);
|
||||
|
||||
|
||||
|
||||
@ -153,9 +179,7 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
iPoint _cursor;
|
||||
|
||||
|
||||
TextPort _port;
|
||||
|
||||
|
||||
@ -181,17 +205,17 @@ private:
|
||||
|
||||
inline int Screen::x() const
|
||||
{
|
||||
return _cursor.x;
|
||||
return _port.cursor.x;
|
||||
}
|
||||
|
||||
inline int Screen::y() const
|
||||
{
|
||||
return _cursor.y;
|
||||
return _port.cursor.y;
|
||||
}
|
||||
|
||||
inline iPoint Screen::cursor() const
|
||||
{
|
||||
return _cursor;
|
||||
return _port.cursor;
|
||||
}
|
||||
|
||||
inline uint8_t Screen::flag() const
|
||||
|
@ -83,6 +83,8 @@
|
||||
|
||||
memcpy(term.c_cc, ttydefchars, sizeof(ttydefchars));
|
||||
|
||||
if ([_emulator respondsToSelector: @selector(initTerm:)])
|
||||
[_emulator initTerm: &term];
|
||||
|
||||
|
||||
pid = forkpty(&fd, NULL, &term, &ws);
|
||||
|
Loading…
Reference in New Issue
Block a user