新四季網

freedos什麼時候開發的(FreeDOS的16)

2023-10-14 00:20:11 5

為什麼文本只能使用這些有限的顏色顯示,為什麼 FreeDOS 使用這些顏色和陰影,而不是其他顏色?答案就像技術中的許多事情一樣,歷史原因。

如果你仔細了解過 FreeDOS,你可能已經注意到文本使用有限的顏色範圍 —— 16 種文本顏色和 8 種背景顏色。這類似於 Linux 顯示文本顏色的方式 —— 你或許能夠在 Linux 終端中更改 文本顏色,但你仍然只能使用 16 種文本顏色和 8 種背景顏色。

DOS 文本有 16 種顏色和 8 種背景顏色(吉姆·霍爾,CC-BY SA 4.0)

為什麼文本只能使用這些有限的顏色顯示,為什麼 FreeDOS 使用這些顏色和陰影,而不是其他顏色?

答案就像技術中的許多事情一樣,歷史原因。

PC 色彩的由來

為了解釋為什麼文本只有 16 種顏色,讓我給你講一個關於第一臺 IBM 個人計算機的故事。這個故事的部分內容可能有些杜撰,但基本內容已經足夠接近。

IBM 於 1981 年發布了個人計算機Personal Computer 5150(「IBM PC」)。該 PC 使用了一個簡單的監視器屏幕,以綠色顯示文本。由於此顯示器僅適用於一種顏色,因此被稱為 單色monochrome(「IBM 5151 單色顯示器」,搭載 IBM 單色顯示適配器Monochrome Display Adapter,即 MDA)。

同年,IBM 發布了 PC 的更新版本,帶來了驚人的技術成就 —— 顏色!新的 IBM 5153 彩色顯示器依賴於新的 IBM 彩色圖形適配器Color Graphics Adapter(CGA)。正是由於這個原始的 CGA,所有的 DOS 文本都繼承了它們的顏色。

但在我們討論那一部分之前,我們首先需要了解一些關於顏色的東西。當我們談論計算機屏幕上的顏色時,我們談論的是混合 三原色(紅色、綠色和藍色)的不同值。你可以將不同級別(「亮度」)的紅光、綠光和藍光混合在一起,以創建幾乎任何顏色。混合紅色和藍色光,你會得到洋紅色。混合藍色和綠色,你會得到青色或淺綠色。均勻地混合所有顏色,你會得到白色。沒有任何淺色,你會看到黑色(沒有顏色)。

混合紅色、綠色和藍色光以獲得不同的顏色(吉姆·霍爾,CC-BY SA 4.0)

IBM 5153 彩色顯示器通過在陰極射線管cathode ray tube(CRT)上點亮微小的紅色、綠色和藍色光點來向用戶呈現顏色。這些小點排列得非常緊密,並以紅色、綠色和藍色的三色點組成一個「像素」的模式排列。通過控制同時點亮哪些螢光點,IBM 5153 彩色顯示器可以顯示不同顏色的像素。

每個紅色、綠色和藍色三元組都是一個像素(吉姆·霍爾,CC-BY SA 4.0)

順便說一句,即使是現代顯示器也使用這種紅色、綠色和藍色點的組合來表示顏色。現代計算機的不同之處在於,每個像素都使用紅色、綠色和藍色 LED 燈(通常並排排列),而不是微小的螢光點。計算機可以打開或關閉每個 LED 燈,以混合每個像素中的紅色、綠色和藍色。

每個紅色、綠色和藍色三元組都是一個像素(吉姆·霍爾,CC-BY SA 4.0)

定義 CGA 顏色

IBM 工程師意識到他們可以通過混合紅色、綠色和藍色像素來顯示多種顏色。在最簡單的情況下,你可以假設單個像素中的每個紅色、綠色和藍色點要麼「開」,要麼「關」。正如任何電腦程式員都會告訴你的那樣,你可以將「開」和「關」表示為二進位 —— 1(1 = 開)和 0(0 = 關)。

用 1 或 0 表示紅色、綠色和藍色意味著你可以組合多達八種顏色,從 000(紅色、綠色和藍色都關閉)到 111(紅色、綠色和藍色都打開)。請注意,位模式類似於「RGB」,因此 RGB=001 是藍色的(只有藍色是打開的),RGB=011 是青色的(綠色和藍色都打開了):

顏色代碼名稱
000
001
010
011
100
101洋紅
110
111

但這只是最簡單的情況。一位特別聰明的 IBM 工程師意識到,只需再添加一點,你就可以將顏色數量從 8 種顏色增加到 16 種。因此,我們可以使用像 iRGB 這樣的位模式,而不是像 RGB 這樣的位模式。我們將把這個額外的「i」位稱為「強度」位,因為如果我們將「強度」位設置為 1(開),那麼我們將在全亮度下點亮紅色、綠色和藍色;如果「強度」位為 0,我們可以使用一些中級亮度。

有了這個簡單的修復程序,現在 CGA 可以顯示 16 種顏色!為了簡單起見,IBM 工程師將高強度顏色稱為常規顏色名稱的「明亮」版本。因此,「紅色」與「亮紅色」配對,「洋紅色」與「亮洋紅色」配對。

顏色代碼名稱顏色代碼名稱
00001000亮黑
00011001亮藍
00101010亮綠
00111011亮青
01001100亮紅
0101洋紅1101亮洋紅
01101110亮黃
01111111亮白

哦不,等等!這實際上不是十六種顏色。如果你注意到 iRGB=0000(黑色)和 iRGB=1000(亮黑色),它們都是相同的 黑色。沒有顏色可以「亮」,所以它們都是普通的黑色。這意味著我們只有 15 種顏色,而不是我們希望的 16 種顏色。

但 IBM 有聰明的工程師為他們工作,他們意識到如何解決這個問題以獲得 16 種顏色。IBM 實際上沒有實現直接的 RGB 到 iRGB,而是實現了 類iRGB 方案。隨著這一變化,IBM 為每個光點設置了四個亮度級別:完全關閉、三分之一亮度、三分之二亮度和全亮度。如果「亮度」位被關閉,那麼每個紅色、綠色和藍色光點將以三分之二的亮度點亮。如果你打開「亮度」位,RGB 顏色中的所有 0 都將以三分之一的亮度點亮,而所有 1 都將以全亮度點亮。

讓我用另一種方式向你描述這一點,使用 Web 顏色代碼表示。如果你熟悉 HTML 顏色,你可能知道你可以使用 #RGB表示顏色,其中 RGB 表示紅色、綠色和藍色值的組合,每個值都在十六進位值 0 到 F 之間。因此,使用 IBM 修改後的 iRGB 定義,iRGB=0001 是 #00a(藍色),iRGB=1001 是 #55f(亮藍色),因為對於高亮度顏色,RGB=001 中的所有零點都以三分之一的亮度點亮(0 到 F 刻度上的「5」左右),RGB=001 中的所有零點都以三分之二的亮度點亮(0 到 F刻度上的「A」)。

顏色代碼名稱顏色代碼名稱
00001000亮黑
00011001亮藍
00101010亮綠
00111011亮青
01001100亮紅
0101洋紅1101亮洋紅
01101110亮黃
01111111亮白

有了這些顏色,我們終於完成了!我們擁有從 iRGB=0000(黑色)到 iRGB=1111(亮白色)以及介於兩者之間的所有顏色的全光譜。就像彩虹般的顏色,這很漂亮。

除了……不,等等,這裡有問題!我們實際上還不能複製彩虹的所有顏色。我們在小學學到的方便的助記符是 ROYGBIV,它可以幫助我們記住彩虹的顏色有紅色、橙色、黃色、綠色、藍色、靛藍和紫色。我們修改後的 iRGB 配色方案包括紅色、黃色、綠色和藍色——我們可以將其「偽造」為靛藍和紫色,但是我們缺少橙色。遭了!

一條美麗的彩虹——不幸的是它含有橙色。(Paweł Fijałkowski,公共)

為了解決這個問題,聰明的 IBM 工程師對 RGB=110 做了最後的修復。高強度顏色(iRGB=1110)以全亮度點亮紅色和綠色螢光粉點以產生黃色,但是在低亮度顏色(iRGB=0110)下,他們以三分之二的亮度點亮紅色,以三分之一的亮度點亮綠色。這將 iRGB=0110 變成了橙色——儘管它後來被稱為「棕色」,因為 IBM 不得不在某處弄亂標準名稱。

顏色代碼名稱顏色代碼名稱
00001000亮黑
00011001亮藍
00101010亮綠
00111011亮青
01001100亮紅
0101洋紅1101亮洋紅
01101110
01111111亮白

這就是 CGA 以及擴展的 DOS 獲得十六種顏色的方式!如果你好奇,這也是為什麼會有「亮黑色」的原因,即使它只是一種灰色陰影。

表示顏色(位和字節)

但是你可能想知道:為什麼 DOS 可以顯示 16 種文本顏色,卻只能顯示 8 種背景顏色?為此,我們需要快速了解計算機如何將顏色信息傳遞給 CGA 卡。

簡而言之,CGA 卡希望將每個字符的文本顏色和背景顏色編碼在一個字節數據包中,一共八位。那麼八位是從哪裡來的呢?

我們剛剛了解了 iRGB(四位)如何生成十六種顏色。文本顏色使用 iRGB ,四位,背景顏色僅限於八種低強度顏色(RGB,三位),加起來只有七位。丟失的第八位在哪裡?

最後一個位可能是為 DOS 時代最重要的用戶界面元素保留的 —— 閃爍文本。雖然閃爍的文本在如今可能很煩人,但在整個 1980 年代初期,閃爍的文本是表示錯誤消息等關鍵信息的友好方式。

將這個「閃爍」位添加到三個背景顏色位(RGB)和四個文本顏色位(iRGB)中會產生八個位或一個字節!計算機喜歡以完整字節為單位進行計數,這使其成為將顏色(和閃爍)信息傳輸到計算機的便捷方式。

因此,表示顏色(和閃爍)的完整字節是 Bbbbffff,其中ffff是文本顏色的 iRGB 位模式(從 0 到 15),bbb是低強度的 RGB 位模式背景顏色(從 0 到 7),而B是「閃爍」位。

十六種文本顏色和八種背景顏色的限制一直持續到今天。當然,DOS 堅持使用這種顏色組合,但即使是像 GNOME 終端這樣的 Linux 終端仿真器也仍然受限於 16 種文本顏色和 8 種背景顏色。當然,Linux 終端可能允許你更改使用的特定顏色,但你仍然限於十六種文本顏色和八種背景顏色。為此,你要感謝 DOS 和最初的 IBM PC。別客氣!

via: https://opensource.com/article/21/6/freedos-sixteen-colors

作者:Jim Hall選題:lujun9972譯者:gpchn校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出

,
同类文章
你想燒香和崇拜佛嗎?

你想燒香和崇拜佛嗎?

雖然人們聽說過他們的手,但每個人都真的明白有很多人。手有歷史悠久的歷史,而這個過程的發展過程也更加艱難,對我們進行思考是非常重要的,因為人們可以看到自己的命運
生命線分支分叉20種圖,即新分叉更困難

生命線分支分叉20種圖,即新分叉更困難

手掌中有許多線條,這些線條不同。而不同類型的手蛤與它的含義不同。事實上,手的類型非常多。一般來說,我們明白我們必須知道屬於自己的一隻手,你可以了解自己的命運
女人手在川志紋理,四川條紋,一個女人有一個強大的

女人手在川志紋理,四川條紋,一個女人有一個強大的

四川鑲邊這隻手是以相同的方式,而手不同,它代表的意義是不同的。男女的結果也有這樣的手階段也不同。當然,雖然手可以看到我們的命運,但我們將在一生中生命
有一種手工製作的飢餓,汞極為開發。

有一種手工製作的飢餓,汞極為開發。

對於一些更好的人來說,他們很容易賺錢,可能會突然有一天,他們的生活會有意想不到的財富,這種意外的財富可以讓你更好地生活。但是,沒有人能擁有如此美好的生活
智能線條突然扭轉了智慧。

智能線條突然扭轉了智慧。

事實上,大多數人都不知道如何改變他們的手,因為我們的手會改變,這也改變了我們的命運。我們的一隻手會改變。這隻手代表著我們一天的命運
WISDOM線條被破壞,但佈線很難發展

WISDOM線條被破壞,但佈線很難發展

我相信大多數人沒有仔細理解握手,但每個人都必須聽到它,但手有一個漫長的歷史,但還有很多人都不知道。事實上,注意你的手。好處,因為它代表著我們的命運
6種面部男人注定要在窮人的窮人中有一個典型的可憐的臉

6種面部男人注定要在窮人的窮人中有一個典型的可憐的臉

臉是一個非常神奇的東西,因為我們可以通過它看到一個人的命運。許多人對自己的命運非常好奇,所以他們會去手和自己的出生和八個角色,看看他們的命運
女人臉,大,全圖,長期以來,已久期待著

女人臉,大,全圖,長期以來,已久期待著

每個人都可能有一個長的痰液和身體部位的不同位置,而不同地點的代表的含義也是不同的。最明顯的是最常見的是人臉上的痣。在我們臉上有很多職位
掌心掌心手掌的手掌手掌手掌的女人?

掌心掌心手掌的手掌手掌手掌的女人?

不同的雙手有不同的財富,有些可能具有平穩的水流,有些可能是粗糙的壽命。在性質中,手相對發展一個人未來的財富。如果一個女人真的有一隻手掌,那麼未來會發生什麼
一個男人可以在右手結婚嗎?

一個男人可以在右手結婚嗎?

對於女孩來說,嫁給是生活中最重要的事情,他們看不到。有些人不能結婚。如果你結婚,他們的婚姻生活不會幸福。人們,人們,你可以擁有幸福的婚姻生活