그 편집자입니다.

추가 정보 : https://github.com/bisqwit/compiler_series/tree/master/ep1/dostools
DOS 환경의 프로그래밍 편집기입니다. 보다 구체적으로, 그것은 DOS 환경의 프로그래밍 편집기처럼 보이는 것입니다.
이 편집기를 사용하고 싶지 않다는 경미한 경고와 함께 엄격하게 그대로 제공됩니다. 진지하게. 그것은 당신을 잘하지 않을 것입니다. 대신 실제 편집기 (https://joe-editor.sourceforge.io/)를 받으십시오. 당신은 그것을 거의 동일하게 보이게 할 수 있으며, 창 시터가 함께 가기를 원한다면, 예를 들어 Macopix를 얻으십시오.
저는 YouTube의 비디오 제작자입니다. 뱀 게임에서 3D 엔진에 이르기까지 다양한 주제를 갖춘 프로그래밍 비디오를 만듭니다.

나는 일반적으로 프로그래밍이든 다른 모든 편집 목적으로 Joe를 사용합니다. 터미널 기반 편집기이므로 XTerm에서 실행합니다. 예, 창문 아래에서도.

그러나 2010 년 에이 비디오를 만들기 시작했을 때 실시간으로 모든 종류의 데스크탑 녹화를하기에는 하드웨어가 너무 느려졌습니다. 이 상황은 2016 년까지 지속되었습니다. 그러나 DOSBOX에는 어떤 종류의 컴퓨터를 실행하든 완벽하게 작동하는 비디오 레코더가 내장 된 완전한 시뮬레이션 환경이 포함되어 있습니다. 그래서 나는 dosbox를 사용해야했다. 또한 DOS는 이미 나에게 매우 친숙한 플랫폼이었습니다.
내 편집자는 Joe가 DOS를 위해 편집 할 수 없기 때문에 작성되었습니다.
DOS에 대한 다른 구문 콜로링 편집기가 있었고 , 실제로 이전 비디오 중 일부에 Borland C ++ 3.1 IDE를 사용하고 싶었 습니다 .

그러나 나는 더 넓은 화면으로 비디오를 만들고 싶었고 최선의 노력에도 불구하고 Bainary-Patch Borland C ++가 80 자 미만의 다른 폭을 가진 화면과 완벽하게 협력 할 수 없었습니다. 그래서 나는 코너에 있었고 내 편집자를 만들 수밖에 없었습니다. 나는 더 이상 터보 비전을 사용하는 방법을 기억할 수 없었고 공부를 귀찮게 할 수 없었기 때문에 편집자를 처음부터 편집자에게 전적으로 썼습니다.
16 비트 DOS에 대한 편집자를 16 비트 인터럽트 콜백과 32 비트 보호 모드 코드와 혼합하려는 중요한 문제가 있다고 생각했기 때문에 나는 16 비트 DOS를 썼습니다. 또한 나는 당시에는 DJGPP가 실제로 현대화되어 있다는 것을 알지 못했다고 생각합니다. 그랬다면. 그래서 Borland C ++ 3.1을 사용했습니다.
Borland 의이 컴파일러는 C ++가 표준화되기 전에 만들어졌으며 소스 코드에서 스타일 / 정신에 대해 많은 희생을해야했습니다. 예를 들어 네임 스페이스 나 템플릿을 지원하지 않았습니다. STL 없음! 따라서 코드는 긴 샷이 아니라 C ++ 프로그래밍을위한 좋은 프로그래밍 관행을 대표하지 않습니다.
또한 16 비트이기 때문에 심각한 메모리 제한과 관련된 버그가 있습니다. 결국 이것은 나의 초기 두려움에도 불구하고 32 비트 DJGPP를 위해 그것을 포트하도록 강요했다 . 나는 단 몇 시간 만에 2018-01-12 에이 포트를 완료했습니다 (아마, 아마도 코딩 스타일은 그다지 나쁘지 않았을 것입니다). 32 비트 디렉토리에서 찾을 수 있습니다. 이 DJGPP 포트는 C ++ 17을 지원하는 매우 최신 GCC 7.2.0에서 컴파일되었지만 코드베이스는 여전히 Borland C ++ 버전과 거의 동일합니다.
내가이 편집기를 사용하고 싶지 않다고 경고 한 부분을 놓쳤습니까? 당신은? 좋아요. 편집자는 내가 가장 좋아하는 편집기 인 Joe와 동일한 입력을 대부분 사용합니다. doc/ Subdirectory에서 키 바인딩 목록을 찾을 수 있습니다.
편집기 버퍼를 라인의 벡터로 나타냅니다. 각 라인은 문자와 현재 색상 속성을 모두 인코딩하는 요소 유형의 벡터입니다. 이 색상 속성은 VGA 호환 8 비트 속성 바이트 였지만 7321F15A 및 05EAF3C7은 XTREM-256COLOR 호환 확장 색상 속성에 대한 지원을 추가하여 편집기의 메모리 사용량을 두 배로 늘 렸습니다. 이를 위해서는 DOSBOX의 특별한 지원이 필요합니다.
구문 하이라이트는 Joe의 구문 강조 엔진을 모델로 한 상태 머신에서 작동합니다. 실제로이 편집기는 동일한 JSF 파일을 사용하여 Joe와 마찬가지로 구문 강조 표시를 구성합니다. Joe와 함께 제공되는 JSF 파일에서 JSF 시스템에 대해 자세히 알아볼 수 있습니다.
구문 하이라이트는 다음 두 가지 옵션을 지원하는 가상 콜백을 사용하여 실시간으로 적용됩니다. 다음 문자를 얻고 일부 속성을 사용하여 이전 섹션을 다시 검색하십시오. 소스 코드 파일은 마지막 업데이트 이후 적어도 한 번 스캔 될 때까지 처음부터 끝까지 지속적으로 스캔됩니다.
1615 1211 8 0
+-+---+-+---+--------+
|B|bbb|I|fff|cccccccc|
+-+---+-+---+--------+
B = blink
bbb = background color (0-7)
I = high-intensity
fff = foreground color (0-7)
ccc = character code (0-255)
With extended attribute (requires patched DOSBox):
323130292827262524 1615 8 0
+-+-+-+-+-+-+-+-+--------+-+-------+--------+
|1|f|B|v|o|i|d|u|bbbbbbbb|1|fffffff|cccccccc|
+-+-+-+-+-+-+-+-+--------+-+-------+--------+
1 = Extended attribute flag
fff = foreground color (0-255); note MSB is stored separately
B = blink
v = inverse
o = bold
i = italic
d = dim
u = underline
bbb = background color (0-255)
ccc = character code (0-255)
Without extended attribute (compatible with any DOS system):
32 1615 12 8 0
+----------------+-+---+----+--------+
|0000000000000000|B|bbb|ffff|cccccccc|
+----------------+-+---+----+--------+
B = blink
bbb = background color (0-7)
fff = foreground color (0-15)
ccc = character code (0-255)
이 속성 단어는 비디오 RAM에 그러한 방식으로 저장되며, 처음 16 비트는 B800 : 0000의 페이지로 이동하지만 상위 16 비트는 동시에 B000 : 0000 페이지로 이동합니다. DOSBOX는이 데이터를 설명하고 올바르게 렌더링하기 위해 특별히 수정되었습니다. 속성 비트의 두 배가 오 탐지를 피하기 위해 있습니다.
아직 지원되지 않는 ANSI 코드의 SGR 기능 :
이 차트에 따라 https://en.wikipedia.org/wiki/ansi_escape_code#8-bit
0=Black 1=Red 2=Green 3=Yellow/Brown
4=Blue 5=Magenta 6=Cyan 7=White/Light gray
8-15 = High-intensity versions of 0-7 (where 15=white)
16-231 = 6x6x6 RGB cube
232-255 = Gray ramp
특정 값은 다음과 같습니다.
static unsigned xterm256table[256] =
{ Make(0,0,0), Make(21,0,0), Make(0,21,0), Make(21,5,0),
Make(0,0,21), Make(21,0,21), Make(0,21,21), Make(21,21,21),
Make(7,7,7), Make(31,5,5), Make(5,31,5), Make(31,31,5),
Make(5,5,31), Make(31,5,31), Make(5,31,31), Make(31,31,31) };
static const unsigned char grayramp[24] = { 1,2,3,5,6,7,8,9,11,12,13,14,16,17,18,19,20,22,23,24,25,27,28,29 };
static const unsigned char colorramp[6] = { 0,12,16,21,26,31 };
for(unsigned n=0; n<216; ++n) { xterm256table[16+n] = Make(colorramp[(n/36)%6], colorramp[(n/6)%6], colorramp[(n)%6]); }
for(unsigned n=0; n<24; ++n) { xterm256table[232+n] = Make(grayramp[n],grayramp[n],grayramp[n]); }
8x16, 8x14 및 8x8 모드 (및 9x16, 9x14, 9x8)에서 글꼴은 호스트 컴퓨터 VGA BIOS가 가지고있는 모든 것입니다. 편집기에는 이러한 모드에 대한 글꼴이 없습니다 . 글꼴 이 있다고 가정합니다. 이 가정은 사실입니다.
8x15, 8x10, 8x12, 4x8, 8x19 및 8x32 모드에서 편집기는 자체 글꼴을 제공하며,이 글은 대부분 Up-/Downscaling을 통해 표준 IBM PC 글꼴에서 알고리즘 적으로 생성됩니다. 이 저장소의 .inc 파일 에서이 글꼴을 찾을 수 있습니다. 아니요, 이들은 Windows 글꼴 파일이 아닙니다. 이것은 Windows 프로그램이 아닙니다.
온도 정보는 맛입니다. 편집기의 하드 코드 텍스트입니다. 자동 측정은 수행되지 않습니다.
편집기는 실행 중에 CPU 속도를 주기적으로 측정합니다. DOSBOX에서 실행되면 CPU 속도도 지속적으로 변경됩니다 . CPU 속도는 구문 강조 표시가 편집 후 완료되는 데 걸리는 시간에 따라 조절됩니다.
그만큼 마리오 상단의 사람 애니메이션은 Norton 도구가 텍스트 모드에서 그래픽 마우스 커서를 렌더링하기 위해 DOS에서 사용한 것과 동일한 원리를 사용합니다.

그것은 현재 아래에있는 캐릭터의 글꼴을 읽습니다. 마리오 사람, 해당 캐릭터를 비트 맵으로 취급하고 덧붙입니다 마리오 사람에게 사람을 안고 수정 된 문자를 글꼴에 설치하고 그 지점의 화면의 문자 색인을 대체하여 수정 된 문자를 참조하십시오.
16 비트 DOS를 위해 구축하려면 DOSBOX를 시작하고 make.bat 사용하십시오. make.bat 에서 경로를 편집해야 할 수도 있습니다.
이를 위해서는 다음과 같은 프로그램이 필요합니다.
32 비트 DOS를 구축하려면 Linux에서 터미널을 열고 32bit 서브 디렉토리로 이동하여 make 을하십시오. DJGPP 설치가 필요하며 물론 make 이 필요합니다.
Debian에 djgpp를 설치하려면 ftp://ftp.fu-berlin.de/pc/languages/djgpp/rpms/, 다음 패키지 : djcrx-(someversion).rpm , djcross-binutils-(someversion).rpm djcross-gcc-(someversion).rpm 와 같은 djgpp 거울에서 다운로드하십시오. 및 djcross-gcc-c++-(someversion).rpm .
그런 다음 fakeroot alien dj*.rpm 및 dpkg -i dj*.deb 실행하십시오.
예제 (280 문자 트윗에 적합하기에 충분히 작은 형식으로) :
sudo apt-get install fakeroot alien wget make
wget -c http://mirrors.fe.up.pt/pub/djgpp/rpms/djcr{oss-{binutils-2.29.1,gcc-7.3.0/djcross-gcc-{,{c++,info,tools}-}7.3.0}-1ap,x-2.05-5}.x86_64.rpm
fakeroot alien dj*.rpm
sudo dpkg -i dj*.deb
DJGPP 프로그램에는 실행하려면 32 비트 DOS 익스텐더 (DOS 보호 모드 인터페이스, DPMI)가 필요합니다. 예제 DPMI 드라이버 (hdpmi32)는 https://sourceforge.net/projects/hx-dos/files/에서 다운로드 할 수 있습니다 : https://sourceforge.net/projects/hx-dos/files/2.17/hxrt217.7z/download
2018-10-28 년 현재, 편집자는 Linux에서도 컴파일 될 수 있습니다. (64 비트는 괜찮습니다.) 32bit 서브 디렉토리로 가서 make e 실행하십시오. 개발 헤더와 함께 설치된 SDL2 라이브러리가 필요합니다.
일반적인 면책 조항에 주목하십시오. 이 편집자는 인간이 사용하기위한 것이 아닙니다.
경고 :
죄송합니다!
종이 얇은 세트 조각. 기본적으로 할리우드입니다.
솔직히 말해서 편집자는 4 개의 동시 커서를 지원합니다. 그러나 전체 실행 취소+redo… 그러나 테스트와 개발은 내 비디오 제작에 의해 감독됩니다. 결국 나는 비디오 에이 편집기 만 사용합니다. 그리고 그 비디오에서는 매우 기본적인 기능 세트 만 필요합니다. 자세한 내용은 doc/ Directory를 참조하십시오.
다시이 편집자는 사람들이 사용하도록 설계되지 않았다는 것을 상기시킵니다. 사람들이 사용하는 것처럼 보이 도록 설계되었습니다.