diff --git a/2Term.xcodeproj/kelvin.pbxuser b/2Term.xcodeproj/kelvin.pbxuser index 3156302..3db2083 100644 --- a/2Term.xcodeproj/kelvin.pbxuser +++ b/2Term.xcodeproj/kelvin.pbxuser @@ -51,14 +51,16 @@ B60EBE0511E916BD00C1974F /* ScanLineFilter.m:23 */, B60EBE0711E916C000C1974F /* ScanLineFilter.m:24 */, B6E6A7DE11EAAB3A00A24C0C /* Screen.cpp:449 */, - B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:484 */, - B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:466 */, + B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:486 */, + B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:468 */, B64925ED11EE73ED0065E73A /* VT52.mm:82 */, B649260011EE74E30065E73A /* VT52.mm:149 */, - B6358D0111F6846C00437AA2 /* VT100.mm:323 */, - B6358D0311F6846F00437AA2 /* VT100.mm:298 */, - B6358D0B11F6852300437AA2 /* VT100.mm:278 */, + B6358D0111F6846C00437AA2 /* VT100.mm:500 */, + B6358D0311F6846F00437AA2 /* VT100.mm:475 */, + B6358D0B11F6852300437AA2 /* VT100.mm:455 */, B6358D0E11F685B600437AA2 /* Screen.cpp:205 */, + B642D32A11FFA06800CBB349 /* VT100.mm:609 */, + B642D33711FFA16F00CBB349 /* EmulatorView.mm:181 */, ); codeSenseManager = B676054911DADB9100D6B66C /* Code sense */; executables = ( @@ -122,7 +124,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 475, + 1335, 20, 48, 43, @@ -161,44 +163,18 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 301361100; - PBXWorkspaceStateSaveDate = 301361100; + PBXPerProjectTemplateStateSaveDate = 301967171; + PBXWorkspaceStateSaveDate = 301967171; }; perUserProjectItems = { - B609786811EEB3DC00623E03 = B609786811EEB3DC00623E03 /* PBXTextBookmark */; - B609786911EEB3DC00623E03 = B609786911EEB3DC00623E03 /* PBXTextBookmark */; B60EBDFB11E916AE00C1974F = B60EBDFB11E916AE00C1974F /* PBXTextBookmark */; B60EBDFC11E916AE00C1974F = B60EBDFC11E916AE00C1974F /* PBXTextBookmark */; B60EBE6211E91C5900C1974F = B60EBE6211E91C5900C1974F /* PBXTextBookmark */; - B6358CA611F667E200437AA2 /* PBXTextBookmark */ = B6358CA611F667E200437AA2 /* PBXTextBookmark */; - B6358CA711F667E200437AA2 /* PBXTextBookmark */ = B6358CA711F667E200437AA2 /* PBXTextBookmark */; - B6358CC611F67B8200437AA2 /* PBXTextBookmark */ = B6358CC611F67B8200437AA2 /* PBXTextBookmark */; - B6358CC711F67B8200437AA2 /* PBXTextBookmark */ = B6358CC711F67B8200437AA2 /* PBXTextBookmark */; - B6358CC811F67B8200437AA2 /* PBXTextBookmark */ = B6358CC811F67B8200437AA2 /* PBXTextBookmark */; - B6358CCF11F67B8C00437AA2 /* PBXTextBookmark */ = B6358CCF11F67B8C00437AA2 /* PBXTextBookmark */; - B6358CD011F67B8E00437AA2 /* PBXTextBookmark */ = B6358CD011F67B8E00437AA2 /* PBXTextBookmark */; - B6358CD311F67C0B00437AA2 /* PBXTextBookmark */ = B6358CD311F67C0B00437AA2 /* PBXTextBookmark */; - B6358CDF11F67E6200437AA2 /* PBXTextBookmark */ = B6358CDF11F67E6200437AA2 /* PBXTextBookmark */; - B6358CE111F67F6B00437AA2 /* PBXTextBookmark */ = B6358CE111F67F6B00437AA2 /* PBXTextBookmark */; - B6358CF111F683C600437AA2 /* PBXTextBookmark */ = B6358CF111F683C600437AA2 /* PBXTextBookmark */; - B6358CF211F683C800437AA2 /* PBXTextBookmark */ = B6358CF211F683C800437AA2 /* PBXTextBookmark */; - B6358CF511F683CA00437AA2 /* PBXTextBookmark */ = B6358CF511F683CA00437AA2 /* PBXTextBookmark */; - B6358CF611F683CD00437AA2 /* PBXTextBookmark */ = B6358CF611F683CD00437AA2 /* PBXTextBookmark */; - B6358CF711F683D100437AA2 /* PBXTextBookmark */ = B6358CF711F683D100437AA2 /* PBXTextBookmark */; - B6358CF811F683D100437AA2 /* PBXTextBookmark */ = B6358CF811F683D100437AA2 /* PBXTextBookmark */; - B6358CFB11F6840100437AA2 /* PBXTextBookmark */ = B6358CFB11F6840100437AA2 /* PBXTextBookmark */; - B6358CFF11F6845500437AA2 /* PBXTextBookmark */ = B6358CFF11F6845500437AA2 /* PBXTextBookmark */; - B6358D0511F6847000437AA2 /* PBXTextBookmark */ = B6358D0511F6847000437AA2 /* PBXTextBookmark */; - B6358D0811F684EB00437AA2 /* PBXTextBookmark */ = B6358D0811F684EB00437AA2 /* PBXTextBookmark */; - B6358D0A11F684F400437AA2 /* PBXTextBookmark */ = B6358D0A11F684F400437AA2 /* PBXTextBookmark */; - B6358D0D11F6852800437AA2 /* PBXTextBookmark */ = B6358D0D11F6852800437AA2 /* PBXTextBookmark */; - B6358D1011F685B700437AA2 /* PBXTextBookmark */ = B6358D1011F685B700437AA2 /* PBXTextBookmark */; - B6358D1311F685F800437AA2 /* PBXTextBookmark */ = B6358D1311F685F800437AA2 /* PBXTextBookmark */; - B6358D1511F6860100437AA2 /* PBXTextBookmark */ = B6358D1511F6860100437AA2 /* PBXTextBookmark */; - B6358D1611F6861000437AA2 /* PBXTextBookmark */ = B6358D1611F6861000437AA2 /* PBXTextBookmark */; - B6358D1711F6863100437AA2 /* PBXTextBookmark */ = B6358D1711F6863100437AA2 /* PBXTextBookmark */; B641C82311EA1B1600B6359F = B641C82311EA1B1600B6359F /* PBXTextBookmark */; B641C88811EA8DCC00B6359F = B641C88811EA8DCC00B6359F /* PBXTextBookmark */; + B642D33111FFA14C00CBB349 = B642D33111FFA14C00CBB349 /* PBXTextBookmark */; + B642D33511FFA14C00CBB349 = B642D33511FFA14C00CBB349 /* PBXTextBookmark */; + B642D34011FFA2A100CBB349 = B642D34011FFA2A100CBB349 /* PBXTextBookmark */; B64925C411EE622D0065E73A = B64925C411EE622D0065E73A /* PBXTextBookmark */; B649E0B511E2A88D0061921F = B649E0B511E2A88D0061921F /* PBXTextBookmark */; B65FA28111E29EDE00EB447E = B65FA28111E29EDE00EB447E /* PBXTextBookmark */; @@ -221,13 +197,18 @@ B676060711DD4FA600D6B66C = B676060711DD4FA600D6B66C /* PBXTextBookmark */; B676064811DEB80600D6B66C = B676064811DEB80600D6B66C /* PBXTextBookmark */; B67606C811DED91C00D6B66C = B67606C811DED91C00D6B66C /* PBXTextBookmark */; - B699A0BE11E58D3B00F54CC8 = B699A0BE11E58D3B00F54CC8 /* PBXTextBookmark */; B699A0C211E58D3B00F54CC8 = B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */; B6A0F71A11F22CD200AC3547 = B6A0F71A11F22CD200AC3547 /* PBXTextBookmark */; - B6A0F72811F22CEE00AC3547 = B6A0F72811F22CEE00AC3547 /* PBXTextBookmark */; - B6A0F72911F22CEE00AC3547 = B6A0F72911F22CEE00AC3547 /* PBXTextBookmark */; - B6A0F72B11F22D6900AC3547 = B6A0F72B11F22D6900AC3547 /* PBXTextBookmark */; + B6BED9D111F7B4C30064628F = B6BED9D111F7B4C30064628F /* PBXTextBookmark */; + B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = B6D1D11711FFA83D00196D8E /* PBXTextBookmark */; + B6D1D11811FFA83D00196D8E /* PBXTextBookmark */ = B6D1D11811FFA83D00196D8E /* PBXTextBookmark */; + B6D1D12811FFAF5500196D8E /* PBXTextBookmark */ = B6D1D12811FFAF5500196D8E /* PBXTextBookmark */; + B6D1D12A11FFB14800196D8E /* PBXTextBookmark */ = B6D1D12A11FFB14800196D8E /* PBXTextBookmark */; + B6D1D12B11FFB14A00196D8E /* PBXTextBookmark */ = B6D1D12B11FFB14A00196D8E /* PBXTextBookmark */; B6E6A7BD11EAA92100A24C0C = B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */; + B6FA9C5411FCE85B00F38EC1 = B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */; + B6FA9C6611FCE9BC00F38EC1 = B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */; + B6FA9C8711FCF97400F38EC1 = B6FA9C8711FCF97400F38EC1 /* PBXTextBookmark */; }; sourceControlManager = B676054811DADB9100D6B66C /* Source Control */; userBuildSettings = { @@ -253,26 +234,6 @@ sepNavVisRange = "{0, 760}"; }; }; - B609786811EEB3DC00623E03 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B64925D811EE6C350065E73A /* VT100.h */; - name = "VT100.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 349; - vrLoc = 0; - }; - B609786911EEB3DC00623E03 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B64925D911EE6C350065E73A /* VT100.mm */; - name = "VT100.mm: 76"; - rLen = 0; - rLoc = 11197; - rType = 0; - vrLen = 534; - vrLoc = 755; - }; B60EBD4E11E8DF0D00C1974F /* EmulatorView.mm:70 */ = { isa = PBXFileBreakpoint; actions = ( @@ -287,7 +248,7 @@ ignoreCount = 0; lineNumber = 70; location = 2Term; - modificationTime = 301368822.963769; + modificationTime = 301969234.76163; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -346,7 +307,7 @@ ignoreCount = 0; lineNumber = 23; location = 2Term; - modificationTime = 301368822.964031; + modificationTime = 301969234.762117; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -364,7 +325,7 @@ ignoreCount = 0; lineNumber = 24; location = 2Term; - modificationTime = 301368822.964296; + modificationTime = 301969234.762309; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -378,187 +339,7 @@ vrLen = 725; vrLoc = 144; }; - B6358CA611F667E200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 633; - vrLoc = 3303; - }; - B6358CA711F667E200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A02E11E528BC00F54CC8 /* Screen.h */; - name = "Screen.h: 187"; - rLen = 0; - rLoc = 3647; - rType = 0; - vrLen = 361; - vrLoc = 2857; - }; - B6358CC611F67B8200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A02E11E528BC00F54CC8 /* Screen.h */; - name = "Screen.h: 187"; - rLen = 0; - rLoc = 3647; - rType = 0; - vrLen = 361; - vrLoc = 2857; - }; - B6358CC711F67B8200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 633; - vrLoc = 3303; - }; - B6358CC811F67B8200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 592; - vrLoc = 3303; - }; - B6358CCF11F67B8C00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 592; - vrLoc = 3303; - }; - B6358CD011F67B8E00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 592; - vrLoc = 3303; - }; - B6358CD311F67C0B00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 592; - vrLoc = 3303; - }; - B6358CDF11F67E6200437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 592; - vrLoc = 3303; - }; - B6358CE111F67F6B00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF111F683C600437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF211F683C800437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF511F683CA00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF611F683CD00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF711F683D100437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CF811F683D100437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CFB11F6840100437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358CFF11F6845500437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D0111F6846C00437AA2 /* VT100.mm:323 */ = { + B6358D0111F6846C00437AA2 /* VT100.mm:500 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -568,15 +349,15 @@ delayBeforeContinue = 0; fileReference = B64925D911EE6C350065E73A /* VT100.mm */; functionName = "-processCharacter:screen:output:"; - hitCount = 1; + hitCount = 0; ignoreCount = 0; - lineNumber = 323; + lineNumber = 500; location = 2Term; - modificationTime = 301368878.918494; + modificationTime = 301969234.763671; originalNumberOfMultipleMatches = 1; state = 2; }; - B6358D0311F6846F00437AA2 /* VT100.mm:298 */ = { + B6358D0311F6846F00437AA2 /* VT100.mm:475 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -586,45 +367,15 @@ delayBeforeContinue = 0; fileReference = B64925D911EE6C350065E73A /* VT100.mm */; functionName = "-processCharacter:screen:output:"; - hitCount = 2; + hitCount = 0; ignoreCount = 0; - lineNumber = 298; + lineNumber = 475; location = 2Term; - modificationTime = 301368845.385673; + modificationTime = 301969234.763844; originalNumberOfMultipleMatches = 1; state = 2; }; - B6358D0511F6847000437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D0811F684EB00437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D0A11F684F400437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D0B11F6852300437AA2 /* VT100.mm:278 */ = { + B6358D0B11F6852300437AA2 /* VT100.mm:455 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -634,24 +385,14 @@ delayBeforeContinue = 0; fileReference = B64925D911EE6C350065E73A /* VT100.mm */; functionName = "-processCharacter:screen:output:"; - hitCount = 2; + hitCount = 0; ignoreCount = 0; - lineNumber = 278; + lineNumber = 455; location = 2Term; - modificationTime = 301368841.644131; + modificationTime = 301969234.764017; originalNumberOfMultipleMatches = 1; state = 2; }; - B6358D0D11F6852800437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; B6358D0E11F685B600437AA2 /* Screen.cpp:205 */ = { isa = PBXFileBreakpoint; actions = ( @@ -662,64 +403,14 @@ delayBeforeContinue = 0; fileReference = B699A02F11E528BC00F54CC8 /* Screen.cpp */; functionName = "Screen::erase(EraseRegion region)"; - hitCount = 1; + hitCount = 0; ignoreCount = 0; lineNumber = 205; location = 2Term; - modificationTime = 301368833.080995; + modificationTime = 301969234.76419; originalNumberOfMultipleMatches = 1; state = 2; }; - B6358D1011F685B700437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D1311F685F800437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D1511F6860100437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D1611F6861000437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; - B6358D1711F6863100437AA2 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - name = "VT52.mm: 150"; - rLen = 0; - rLoc = 3524; - rType = 0; - vrLen = 544; - vrLoc = 3079; - }; B641C82311EA1B1600B6359F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B6697A3C11E7CCA0002ED475 /* PTSE.mm */; @@ -740,6 +431,72 @@ vrLen = 396; vrLoc = 0; }; + B642D32A11FFA06800CBB349 /* VT100.mm:609 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B64925D911EE6C350065E73A /* VT100.mm */; + functionName = "-processCharacter:screen:output:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 609; + location = 2Term; + modificationTime = 301969234.764396; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B642D33111FFA14C00CBB349 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 357"; + rLen = 0; + rLoc = 8214; + rType = 0; + vrLen = 529; + vrLoc = 8047; + }; + B642D33511FFA14C00CBB349 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B64925D911EE6C350065E73A /* VT100.mm */; + name = "VT100.mm: 756"; + rLen = 0; + rLoc = 21016; + rType = 0; + vrLen = 715; + vrLoc = 16517; + }; + B642D33711FFA16F00CBB349 /* EmulatorView.mm:181 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + functionName = "-drawRect:"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 181; + location = 2Term; + modificationTime = 301969234.76459; + originalNumberOfMultipleMatches = 1; + state = 2; + }; + B642D34011FFA2A100CBB349 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B64925D911EE6C350065E73A /* VT100.mm */; + name = "VT100.mm: 756"; + rLen = 0; + rLoc = 21016; + rType = 0; + vrLen = 1264; + vrLoc = 16383; + }; B64925C411EE622D0065E73A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B699A02F11E528BC00F54CC8 /* Screen.cpp */; @@ -752,16 +509,16 @@ }; B64925D811EE6C350065E73A /* VT100.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1167, 1011}}"; - sepNavSelRange = "{523, 0}"; - sepNavVisRange = "{0, 531}"; + sepNavIntBoundsRect = "{{0, 0}, {1064, 997}}"; + sepNavSelRange = "{454, 12}"; + sepNavVisRange = "{0, 1203}"; }; }; B64925D911EE6C350065E73A /* VT100.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {999, 9425}}"; - sepNavSelRange = "{6709, 0}"; - sepNavVisRange = "{7064, 725}"; + sepNavIntBoundsRect = "{{0, 0}, {1513, 13364}}"; + sepNavSelRange = "{21016, 0}"; + sepNavVisRange = "{16416, 1231}"; }; }; B64925ED11EE73ED0065E73A /* VT52.mm:82 */ = { @@ -778,7 +535,7 @@ ignoreCount = 0; lineNumber = 82; location = 2Term; - modificationTime = 301368822.974227; + modificationTime = 301969234.763274; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -796,7 +553,7 @@ ignoreCount = 0; lineNumber = 149; location = 2Term; - modificationTime = 301368822.974489; + modificationTime = 301969234.763494; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -824,7 +581,7 @@ ignoreCount = 0; lineNumber = 460; location = 2Term; - modificationTime = 301368822.960588; + modificationTime = 301969234.75945; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -842,7 +599,7 @@ ignoreCount = 0; lineNumber = 107; location = 2Term; - modificationTime = 301368822.960837; + modificationTime = 301969234.759619; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -860,7 +617,7 @@ ignoreCount = 0; lineNumber = 598; location = 2Term; - modificationTime = 301368822.9611; + modificationTime = 301969234.75978; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -878,7 +635,7 @@ ignoreCount = 0; lineNumber = 607; location = 2Term; - modificationTime = 301368822.961329; + modificationTime = 301969234.759937; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -896,7 +653,7 @@ ignoreCount = 0; lineNumber = 170; location = 2Term; - modificationTime = 301368822.961551; + modificationTime = 301969234.760094; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -914,7 +671,7 @@ ignoreCount = 0; lineNumber = 113; location = 2Term; - modificationTime = 301368822.961807; + modificationTime = 301969234.76026; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -932,7 +689,7 @@ ignoreCount = 0; lineNumber = 123; location = 2Term; - modificationTime = 301368822.960249; + modificationTime = 301969234.759063; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -962,11 +719,6 @@ name = stl_vector.h; path = "/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_vector.h"; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {999, 12753}}"; - sepNavSelRange = "{16903, 0}"; - sepNavVisRange = "{16562, 857}"; - }; }; B669797711E6A6CE002ED475 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -1006,7 +758,7 @@ ignoreCount = 0; lineNumber = 202; location = 2Term; - modificationTime = 301368822.962095; + modificationTime = 301969234.760428; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1024,7 +776,7 @@ ignoreCount = 0; lineNumber = 201; location = 2Term; - modificationTime = 301368822.962435; + modificationTime = 301969234.760638; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1042,7 +794,7 @@ ignoreCount = 0; lineNumber = 296; location = 2Term; - modificationTime = 301368822.962736; + modificationTime = 301969234.760803; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1060,7 +812,7 @@ ignoreCount = 0; lineNumber = 290; location = 2Term; - modificationTime = 301368822.96298; + modificationTime = 301969234.760969; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1078,7 +830,7 @@ ignoreCount = 0; lineNumber = 258; location = 2Term; - modificationTime = 301368822.963273; + modificationTime = 301969234.761154; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1106,7 +858,7 @@ ignoreCount = 0; lineNumber = 50; location = 2Term; - modificationTime = 301368822.963506; + modificationTime = 301969234.761328; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1341,16 +1093,16 @@ }; B676063911DEAD3500D6B66C /* TermWindowController.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1249, 978}}"; - sepNavSelRange = "{175, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {1064, 997}}"; + sepNavSelRange = "{232, 18}"; sepNavVisRange = "{0, 343}"; }; }; B676063A11DEAD3500D6B66C /* TermWindowController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1167, 1287}}"; - sepNavSelRange = "{1264, 0}"; - sepNavVisRange = "{391, 1459}"; + sepNavIntBoundsRect = "{{0, 0}, {653, 1274}}"; + sepNavSelRange = "{492, 0}"; + sepNavVisRange = "{1005, 409}"; }; }; B676064811DEB80600D6B66C /* PBXTextBookmark */ = { @@ -1360,7 +1112,7 @@ rLen = 0; rLoc = 0; rType = 0; - vrLen = 374; + vrLen = 343; vrLoc = 0; }; B676066111DEBFB000D6B66C /* TwoTermAppDelegate.m:34 */ = { @@ -1377,7 +1129,7 @@ ignoreCount = 0; lineNumber = 34; location = 2Term; - modificationTime = 301368822.954769; + modificationTime = 301969234.757446; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1395,7 +1147,7 @@ ignoreCount = 0; lineNumber = 31; location = 2Term; - modificationTime = 301368822.955399; + modificationTime = 301969234.757856; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1413,7 +1165,7 @@ ignoreCount = 0; lineNumber = 97; location = 2Term; - modificationTime = 301368822.955677; + modificationTime = 301969234.758029; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1431,7 +1183,7 @@ ignoreCount = 0; lineNumber = 97; location = 2Term; - modificationTime = 301368822.95594; + modificationTime = 301969234.758176; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1469,9 +1221,9 @@ }; B67606D911DF6DAB00D6B66C /* EmulatorView.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1167, 6604}}"; - sepNavSelRange = "{1680, 0}"; - sepNavVisRange = "{619, 1710}"; + sepNavIntBoundsRect = "{{0, 0}, {1513, 6279}}"; + sepNavSelRange = "{8214, 0}"; + sepNavVisRange = "{8133, 862}"; }; }; B676070811DF8F4100D6B66C /* TermWindowController.m:97 */ = { @@ -1488,22 +1240,22 @@ ignoreCount = 0; lineNumber = 97; location = 2Term; - modificationTime = 301368822.956162; + modificationTime = 301969234.758839; originalNumberOfMultipleMatches = 1; state = 0; }; B699A02E11E528BC00F54CC8 /* Screen.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1167, 2574}}"; - sepNavSelRange = "{971, 0}"; - sepNavVisRange = "{369, 1635}"; + sepNavIntBoundsRect = "{{0, 0}, {653, 2834}}"; + sepNavSelRange = "{3647, 0}"; + sepNavVisRange = "{2850, 266}"; }; }; B699A02F11E528BC00F54CC8 /* Screen.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {999, 5798}}"; - sepNavSelRange = "{3735, 0}"; - sepNavVisRange = "{3445, 696}"; + sepNavIntBoundsRect = "{{0, 0}, {1859, 6097}}"; + sepNavSelRange = "{1262, 0}"; + sepNavVisRange = "{1026, 447}"; }; }; B699A03211E528DE00F54CC8 /* iGeometry.h */ = { @@ -1543,21 +1295,11 @@ }; B699A09011E572A300F54CC8 /* VT52.mm */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {670, 7189}}"; + sepNavIntBoundsRect = "{{0, 0}, {653, 7072}}"; sepNavSelRange = "{3524, 0}"; sepNavVisRange = "{3079, 544}"; }; }; - B699A0BE11E58D3B00F54CC8 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B676063A11DEAD3500D6B66C /* TermWindowController.m */; - name = "TermWindowController.m: 30"; - rLen = 0; - rLoc = 492; - rType = 0; - vrLen = 685; - vrLoc = 948; - }; B699A0C211E58D3B00F54CC8 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B699A05C11E54D4500F54CC8 /* OutputChannel.cpp */; @@ -1578,32 +1320,15 @@ vrLen = 625; vrLoc = 3609; }; - B6A0F72811F22CEE00AC3547 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A02E11E528BC00F54CC8 /* Screen.h */; - name = "Screen.h: 187"; - rLen = 0; - rLoc = 3647; - rType = 0; - vrLen = 361; - vrLoc = 2857; - }; - B6A0F72911F22CEE00AC3547 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = B699A09011E572A300F54CC8 /* VT52.mm */; - rLen = 0; - rLoc = 149; - rType = 1; - }; - B6A0F72B11F22D6900AC3547 /* PBXTextBookmark */ = { + B6BED9D111F7B4C30064628F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B699A09011E572A300F54CC8 /* VT52.mm */; name = "VT52.mm: 150"; rLen = 0; rLoc = 3524; rType = 0; - vrLen = 696; - vrLoc = 3303; + vrLen = 544; + vrLoc = 3079; }; B6C0EA2F11F22CA400040D2D /* ttydefaults.h */ = { isa = PBXFileReference; @@ -1612,6 +1337,56 @@ path = /Developer/SDKs/MacOSX10.6.sdk/usr/include/sys/ttydefaults.h; sourceTree = ""; }; + B6D1D11711FFA83D00196D8E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B64925D911EE6C350065E73A /* VT100.mm */; + name = "VT100.mm: 756"; + rLen = 0; + rLoc = 21016; + rType = 0; + vrLen = 1231; + vrLoc = 16416; + }; + B6D1D11811FFA83D00196D8E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 355"; + rLen = 0; + rLoc = 8214; + rType = 0; + vrLen = 869; + vrLoc = 8064; + }; + B6D1D12811FFAF5500196D8E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 359"; + rLen = 0; + rLoc = 8214; + rType = 0; + vrLen = 862; + vrLoc = 8133; + }; + B6D1D12A11FFB14800196D8E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 359"; + rLen = 0; + rLoc = 8214; + rType = 0; + vrLen = 862; + vrLoc = 8133; + }; + B6D1D12B11FFB14A00196D8E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; + name = "EmulatorView.mm: 359"; + rLen = 0; + rLoc = 8214; + rType = 0; + vrLen = 862; + vrLoc = 8133; + }; B6E6A7BD11EAA92100A24C0C /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = B699A03211E528DE00F54CC8 /* iGeometry.h */; @@ -1636,11 +1411,11 @@ ignoreCount = 0; lineNumber = 449; location = 2Term; - modificationTime = 301368822.964905; + modificationTime = 301969234.762485; originalNumberOfMultipleMatches = 1; state = 2; }; - B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:484 */ = { + B6E6A7F711EAAEC100A24C0C /* EmulatorView.mm:486 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -1652,13 +1427,13 @@ functionName = "ViewScreen::setSize(unsigned width, unsigned height, bool resizeView)"; hitCount = 0; ignoreCount = 0; - lineNumber = 484; + lineNumber = 486; location = 2Term; - modificationTime = 301368822.973521; + modificationTime = 301969234.762665; originalNumberOfMultipleMatches = 1; state = 2; }; - B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:466 */ = { + B6E6A80A11EAB13000A24C0C /* EmulatorView.mm:468 */ = { isa = PBXFileBreakpoint; actions = ( ); @@ -1669,9 +1444,9 @@ fileReference = B67606D911DF6DAB00D6B66C /* EmulatorView.mm */; hitCount = 0; ignoreCount = 0; - lineNumber = 466; + lineNumber = 468; location = 2Term; - modificationTime = 301368822.973945; + modificationTime = 301969234.76298; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1703,4 +1478,34 @@ sepNavVisRange = "{638, 1966}"; }; }; + B6FA9C5411FCE85B00F38EC1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B699A02E11E528BC00F54CC8 /* Screen.h */; + name = "Screen.h: 203"; + rLen = 0; + rLoc = 3647; + rType = 0; + vrLen = 266; + vrLoc = 2850; + }; + B6FA9C6611FCE9BC00F38EC1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B64925D811EE6C350065E73A /* VT100.h */; + name = "VT100.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 314; + vrLoc = 28; + }; + B6FA9C8711FCF97400F38EC1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = B676063A11DEAD3500D6B66C /* TermWindowController.m */; + name = "TermWindowController.m: 30"; + rLen = 0; + rLoc = 492; + rType = 0; + vrLen = 409; + vrLoc = 1005; + }; } diff --git a/2Term.xcodeproj/kelvin.perspectivev3 b/2Term.xcodeproj/kelvin.perspectivev3 index 7f82b14..a80c959 100644 --- a/2Term.xcodeproj/kelvin.perspectivev3 +++ b/2Term.xcodeproj/kelvin.perspectivev3 @@ -200,8 +200,8 @@ PerspectiveWidths - 1060 - 1060 + 1920 + 1920 Perspectives @@ -285,13 +285,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 - 1 + 24 + 18 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {324, 843}} + {{0, 0}, {324, 1060}} PBXTopSmartGroupGIDs @@ -301,7 +301,7 @@ GeometryConfiguration Frame - {{0, 0}, {341, 861}} + {{0, 0}, {341, 1078}} GroupTreeTableConfiguration MainColumn @@ -322,7 +322,7 @@ PBXProjectModuleGUID B676054211DADB9000D6B66C PBXProjectModuleLabel - VT52.mm + EmulatorView.mm PBXSplitModuleInNavigatorKey Split0 @@ -330,11 +330,11 @@ PBXProjectModuleGUID B676054311DADB9000D6B66C PBXProjectModuleLabel - VT52.mm + EmulatorView.mm _historyCapacity 0 bookmark - B6358D1711F6863100437AA2 + B6D1D12B11FFB14A00196D8E history B676058811DAE21100D6B66C @@ -347,7 +347,6 @@ B65FA28111E29EDE00EB447E B65FA2FE11E2A5D200EB447E B649E0B511E2A88D0061921F - B699A0BE11E58D3B00F54CC8 B699A0C211E58D3B00F54CC8 B669797711E6A6CE002ED475 B66979BD11E6ACB9002ED475 @@ -367,11 +366,13 @@ B641C88811EA8DCC00B6359F B6E6A7BD11EAA92100A24C0C B64925C411EE622D0065E73A - B609786811EEB3DC00623E03 - B609786911EEB3DC00623E03 B6A0F71A11F22CD200AC3547 - B6358CC611F67B8200437AA2 - B6358CF511F683CA00437AA2 + B6BED9D111F7B4C30064628F + B6FA9C5411FCE85B00F38EC1 + B6FA9C6611FCE9BC00F38EC1 + B6FA9C8711FCF97400F38EC1 + B6D1D11711FFA83D00196D8E + B642D33111FFA14C00CBB349 SplitCount @@ -385,16 +386,16 @@ GeometryConfiguration Frame - {{0, 0}, {714, 331}} + {{0, 0}, {1574, 497}} Module PBXNavigatorGroup Proportion - 331pt + 497pt Proportion - 525pt + 576pt Tabs @@ -408,7 +409,7 @@ GeometryConfiguration Frame - {{10, 27}, {714, 498}} + {{10, 27}, {1574, 549}} Module XCDetailModule @@ -483,7 +484,7 @@ GeometryConfiguration Frame - {{10, 27}, {714, 498}} + {{10, 27}, {714, 524}} Module PBXBuildResultsModule @@ -492,7 +493,7 @@ Proportion - 714pt + 1574pt Name @@ -511,11 +512,11 @@ TableOfContents - B6358CA811F667E200437AA2 + B6D1D11911FFA83D00196D8E 1CA23ED40692098700951B8B - B6358CA911F667E200437AA2 + B6D1D11A11FFA83D00196D8E B676054211DADB9000D6B66C - B6358CAA11F667E200437AA2 + B6D1D11B11FFA83D00196D8E 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -556,6 +557,8 @@ Layout + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -566,14 +569,14 @@ GeometryConfiguration Frame - {{0, 0}, {1060, 265}} + {{0, 0}, {1920, 453}} RubberWindowFrame - 874 165 1060 902 0 0 1920 1178 + 0 59 1920 1119 0 0 1920 1178 Module PBXDebugCLIModule Proportion - 265pt + 453pt ContentConfiguration @@ -592,8 +595,8 @@ yes sizes - {{0, 0}, {517, 289}} - {{517, 0}, {543, 289}} + {{0, 0}, {936, 303}} + {{936, 0}, {984, 303}} VerticalSplitView @@ -608,8 +611,8 @@ yes sizes - {{0, 0}, {1060, 289}} - {{0, 289}, {1060, 302}} + {{0, 0}, {1920, 303}} + {{0, 303}, {1920, 317}} @@ -629,7 +632,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 270}, {1060, 591}} + {{0, 458}, {1920, 620}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -639,20 +642,20 @@ Value 85 Summary - 313 + 754 Frame - {{517, 0}, {543, 289}} + {{936, 0}, {984, 303}} RubberWindowFrame - 874 165 1060 902 0 0 1920 1178 + 0 59 1920 1119 0 0 1920 1178 RubberWindowFrame - 874 165 1060 902 0 0 1920 1178 + 0 59 1920 1119 0 0 1920 1178 Module PBXDebugSessionModule Proportion - 591pt + 620pt Name @@ -670,14 +673,14 @@ TableOfContents - B6358CAB11F667E200437AA2 + B6D1D11C11FFA83D00196D8E 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - B6358CAC11F667E200437AA2 - B6358CAD11F667E200437AA2 - B6358CAE11F667E200437AA2 - B6358CAF11F667E200437AA2 - B6358CB011F667E200437AA2 + B6D1D11D11FFA83D00196D8E + B6D1D11E11FFA83D00196D8E + B6D1D11F11FFA83D00196D8E + B6D1D12011FFA83D00196D8E + B6D1D12111FFA83D00196D8E ToolbarConfigUserDefaultsMinorVersion 2 @@ -711,15 +714,14 @@ 5 WindowOrderList - B6358D1411F685F800437AA2 - B6358CCA11F67B8200437AA2 - B6358CCB11F67B8200437AA2 - B6358CF411F683C800437AA2 - B6358CCC11F67B8200437AA2 + B6D1D12911FFAF5500196D8E + B6D1D12311FFA83D00196D8E + B6D1D12411FFA83D00196D8E + B6D1D12511FFA83D00196D8E /Users/kelvin/Projects/2Term/2Term.xcodeproj WindowString - 874 165 1060 902 0 0 1920 1178 + 0 59 1920 1119 0 0 1920 1178 WindowToolsV3 @@ -1092,7 +1094,7 @@ TableOfContents 1C530D5B069F1CE1000CFCEE - B60EBE6811E91E1E00C1974F + B6BED9FA11F7C2980064628F 1C78EAAC065D492600B07095 ToolbarConfiguration diff --git a/EmulatorView.mm b/EmulatorView.mm index 6ae0bb2..da7ccae 100644 --- a/EmulatorView.mm +++ b/EmulatorView.mm @@ -124,12 +124,12 @@ NSRect screenRect = dirtyRect; unsigned x, y; - unsigned lastFlag = 0; + NSColor *currentFront; NSColor *currentBack; - unsigned currentFlag; + BOOL setFront = YES; screenRect.origin.x -= _paddingLeft; screenRect.origin.y -= _paddingTop; @@ -163,7 +163,6 @@ currentFront = _foregroundColor; currentBack = _backgroundColor; - currentFlag = Screen::FlagNormal; _screen.lock(); @@ -175,35 +174,36 @@ NSRect charRect = NSMakeRect(_paddingLeft + x * _charWidth, _paddingTop + y *_charHeight, _charWidth, _charHeight); NSImage *img; CharInfo ci = _screen.getc(x, y); + unsigned flag = ci.flag; // todo -- check flags to determine fg/bg color, etc. // need to draw background individually.... - if (currentFlag != ci.flag) - { - currentFlag = ci.flag; - currentBack = _backgroundColor; - currentFront = _foregroundColor; - if (lastFlag & Screen::FlagBold) - currentFront = _boldColor; - - if (lastFlag & Screen::FlagInverse) - { - std::swap(currentFront, currentBack); - } - - if (currentFront != _foregroundColor) - [currentFront setFill]; - } + + currentBack = _backgroundColor; + currentFront = _foregroundColor; + + if (flag & Screen::FlagBold) + currentFront = _boldColor; + img = [_charGen imageForCharacter: ci.c]; + if (flag & Screen::FlagInverse) + { + std::swap(currentBack, currentFront); + } + if (currentBack != _backgroundColor) { [currentBack setFill]; NSRectFill(charRect); - [currentFront setFill]; + setFront = YES; } + + if (_foregroundColor != currentFront) setFront = YES; + + /* [img drawAtPoint: NSMakePoint(x * _charWidth, y * _charHeight) @@ -213,6 +213,8 @@ */ if (img) { + if (setFront) [currentFront setFill]; + [img drawInRect: charRect fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1.0 diff --git a/VT100.h b/VT100.h index 68570a0..5eb1ebf 100644 --- a/VT100.h +++ b/VT100.h @@ -27,8 +27,27 @@ BOOL _keyMode; BOOL _vt52Mode; BOOL _graphics; - + iPoint _dca; + + + struct __vt100flags { + unsigned int DECANM:1; // vt52 mode + unsigned int DECARM:1; // auto repeat mode. + unsigned int DECAWM:1; // autowrap mode + unsigned int DECCKM:1; // cursor key mode. + unsigned int DECKPAM:1; // alternate keypad. + unsigned int DECKPNM:1; // not alternate keypad. + unsigned int DECCOLM:1; // 80/132 mode. + unsigned int DECSCLM:1; // scrolling + unsigned int DECSCNM:1; // screen + unsigned int DECOM:1; // origin + unsigned int DECINLM:1; // interlace + + unsigned int LNM:1; // line feed new line mode. + + + } _flags; #ifdef __cplusplus std::vector _parms; diff --git a/VT100.mm b/VT100.mm index 1fcf36e..7fb22d1 100644 --- a/VT100.mm +++ b/VT100.mm @@ -23,10 +23,18 @@ enum { StateDCAY, StateDCAX, StateBracket, + StateBracketQuestion, StatePound }; +-(id)init +{ + self = [super init]; + [self reset]; + + return self; +} -(NSString *)name { return @"VT100"; @@ -53,6 +61,22 @@ enum { { _state = StateText; _vt52Mode = NO; + + _flags.DECANM = 1; // ansi/vt100 mode + _flags.DECARM = 0; + _flags.DECAWM = 0; + _flags.DECCKM = 0; + _flags.DECKPAM = 0; + _flags.DECKPNM = 1; + _flags.DECCOLM = 0; + + _flags.DECSCLM = 0; + _flags.DECSCNM = 0; + _flags.DECOM = 0; + _flags.DECINLM = 0; + _flags.LNM = 0; + + } @@ -200,6 +224,154 @@ enum { return; } + + if (_state == StateBracketQuestion) + { + // ESC [? \d+ h|l + switch(c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + _parms.back() = _parms.back() * 10 + (c - '0'); + break; + + case ';': + _parms.push_back(0); + break; + + case 'h': + { + // h = set + std::vector::iterator iter; + + for (iter = _parms.begin(); iter != _parms.end(); ++iter) + { + switch (*iter) + { + /* + case 20: + _flags.LNM = 1; + break; + */ + + case 1: + _flags.DECCKM = 1; + break; + + case 3: + _flags.DECCOLM = 1; + screen->setSize(132, 24); + break; + + case 4: + _flags.DECSCLM = 1; + break; + + case 5: + _flags.DECSCNM = 1; + break; + + case 6: + _flags.DECOM = 1; + break; + + case 7: + _flags.DECAWM = 1; + break; + + case 8: + _flags.DECARM = 1; + break; + + case 9: + _flags.DECINLM = 1; + break; + + } + } + _state = StateText; + break; + } + + case 'l': + { + + // l = reset + std::vector::iterator iter; + + for (iter = _parms.begin(); iter != _parms.end(); ++iter) + { + switch (*iter) + { + /* + case 20: + _flags.LNM = 0; + break; + */ + + case 1: + _flags.DECCKM = 0; + break; + + case 2: + _vt52Mode = YES; + _flags.DECANM = 0; + break; + + case 3: + _flags.DECCOLM = 0; + screen->setSize(80, 24); + break; + + case 4: + _flags.DECSCLM = 0; + break; + + case 5: + _flags.DECSCNM = 0; + break; + + case 6: + _flags.DECOM = 0; + break; + + case 7: + _flags.DECAWM = 0; + break; + + case 8: + _flags.DECARM = 0; + break; + + case 9: + _flags.DECINLM = 0; + break; + + } + } + _state = StateText; + break; + + } + default: + NSLog(@"[%s %s]: unrecognized escape character: `ESC [? %d %c' (%02x)", + object_getClassName(self), sel_getName(_cmd), _parms[0], c, (int)c); + + _state = StateText; + break; + } + + return; + } + if (_state == StateBracket) { // '[' [0-9]* CODE @@ -224,6 +396,11 @@ enum { _parms.push_back(0); break; + case '?': + _parms.clear(); + _parms.push_back(0); + _state = StateBracketQuestion; + break; case 'A': // cursor up. default 1. @@ -339,6 +516,132 @@ enum { } + case 'c': + { + // who are you? + + output->write(ESC "[?1;0c"); + + _state = StateText; + break; + } + + + case 'n': + // status reports. + { + char *str = NULL; + + switch (_parms[0]) + { + case 5: + // terminal status report + // ESC [ 0 n == terminal ok + // ESC [ 3 n == terminal not ok. + output->write(ESC "0n"); + break; + + case 6: + // cursor position + // ESC [ line ; column R + asprintf(&str, ESC "[%u;%uR", screen->y() + 1, screen->x() + 1); + if (str) + { + output->write(str); + free(str); + } + break; + + default: + NSLog(@"[%s %s]: unrecognized escape character: `ESC [ %d %c'", + object_getClassName(self), sel_getName(_cmd), _parms[0], c); + break; + + + } + + _state = StateText; + break; + } + + case 'l': + { + // l = reset + std::vector::iterator iter; + + for (iter = _parms.begin(); iter != _parms.end(); ++iter) + { + switch (*iter) + { + case 20: + _flags.LNM = 0; + break; + } + } + _state = StateText; + break; + } + + case 'h': + { + // h = set + std::vector::iterator iter; + + for (iter = _parms.begin(); iter != _parms.end(); ++iter) + { + switch (*iter) + { + case 20: + _flags.LNM = 1; + break; + } + } + _state = StateText; + break; + + } + + + + case 'm': + { + std::vector::iterator iter; + unsigned flag = screen->flag(); + + for (iter = _parms.begin(); iter != _parms.end(); ++iter) + { + switch (*iter) + { + case 0: + // attributes off + flag = Screen::FlagNormal; + break; + case 1: + // bold/increased intensity. + flag |= Screen::FlagBold; + break; + case 4: + // underscore. + flag |= Screen::FlagInverse; + break; + case 5: + //blink + flag |= Screen::FlagBlink; + break; + + case 7: + // inverse + flag |= Screen::FlagInverse; + break; + } + } + + screen->setFlag(flag); + _state = StateText; + + break; + } + default: NSLog(@"[%s %s]: unrecognized escape character: `ESC [ %c' (%02x)", object_getClassName(self), sel_getName(_cmd), c, (int)c); _state = StateText; @@ -369,6 +672,20 @@ enum { _state = StatePound; break; + case '=': + _flags.DECKPAM = 1; + _flags.DECKPNM = 0; + _altKeyPad = YES; + _state = StateText; + break; + + case '>': + _flags.DECKPAM = 0; + _flags.DECKPNM = 1; + _altKeyPad = NO; + _state = StateText; + break; + case 'D': // Index screen->lineFeed(); @@ -380,6 +697,11 @@ enum { _state = StateText; break; + case 'Z': + output->write(ESC "[?1;0c"); + _state = StateText; + break; + case '7': // save cursor + attributes case '8': @@ -393,6 +715,7 @@ enum { break; } + return; } if (_state == StateText) @@ -419,6 +742,8 @@ enum { case '\n': screen->lineFeed(); + if (_flags.LNM) + screen->setX(0); break; case '\r': @@ -439,12 +764,12 @@ enum { -static void vt100ModeKey(unichar uc, unsigned flags, Screen *screen, OutputChannel *output, BOOL altKeyPad) +static void vt100ModeKey(unichar uc, unsigned flags, Screen *screen, OutputChannel *output, struct __vt100flags vt100flags) { const char *str = NULL; - if (altKeyPad && (flags & NSFunctionKeyMask)) + if (vt100flags.DECKPAM && (flags & NSFunctionKeyMask)) { switch (uc) { @@ -507,16 +832,16 @@ static void vt100ModeKey(unichar uc, unsigned flags, Screen *screen, OutputChann switch(uc) { case NSUpArrowFunctionKey: - str = altKeyPad ? ESC "OA" : ESC "[A"; + str = vt100flags.DECKPAM ? ESC "OA" : ESC "[A"; break; case NSDownArrowFunctionKey: - str = altKeyPad ? ESC "OB" : ESC "[B"; + str = vt100flags.DECKPAM ? ESC "OB" : ESC "[B"; break; case NSRightArrowFunctionKey: - str = altKeyPad ? ESC "OC" : ESC "[C"; + str = vt100flags.DECKPAM ? ESC "OC" : ESC "[C"; break; case NSLeftArrowFunctionKey: - str = altKeyPad ? ESC "OD" : ESC "[D"; + str = vt100flags.DECKPAM ? ESC "OD" : ESC "[D"; break; case NSF1FunctionKey: @@ -532,6 +857,13 @@ static void vt100ModeKey(unichar uc, unsigned flags, Screen *screen, OutputChann str = ESC "OS"; break; + + case '\n': + if (vt100flags.LNM) + output->write("\r\n"); + else output->write('\n'); + break; + case NSDeleteCharacter: uc = 0x7f; // fallthrough. @@ -559,11 +891,11 @@ static void vt100ModeKey(unichar uc, unsigned flags, Screen *screen, OutputChann } -static void vt52ModeKey(unichar uc, unsigned flags, Screen * screen, OutputChannel *output, BOOL altKeyPad) +static void vt52ModeKey(unichar uc, unsigned flags, Screen * screen, OutputChannel *output, struct __vt100flags vt100flags) { const char *str = NULL; - if (altKeyPad && (flags & NSNumericPadKeyMask)) + if (vt100flags.DECKPAM && (flags & NSNumericPadKeyMask)) { switch(uc) { @@ -648,6 +980,8 @@ static void vt52ModeKey(unichar uc, unsigned flags, Screen * screen, OutputChann str = ESC "S"; break; + + case NSDeleteCharacter: uc = 0x7f; // fallthrough.. @@ -683,9 +1017,9 @@ static void vt52ModeKey(unichar uc, unsigned flags, Screen * screen, OutputChann unichar uc = [chars characterAtIndex: i]; if (_vt52Mode) - vt52ModeKey(uc, flags, screen, output, _altKeyPad); + vt52ModeKey(uc, flags, screen, output, _flags); else - vt100ModeKey(uc, flags, screen, output, _altKeyPad); + vt100ModeKey(uc, flags, screen, output, _flags); }