* T.100

- [17] [CITE@en[T.100 : International information exchange for interactive Videotex]], [[tsbmail]], [TIME[2020-12-05T08:06:28.000Z]] <https://www.itu.int/rec/T-REC-T.100-198811-I/en>

[73] [SRC[PDF]]

- [[ISO/IEC 2022]] [[7ビット符号]]
- [[C0]] ESC 2/2 4/0
- [[C1]] ESC 2/2 4/1
-- The supplementary set of control functions-serial mode
-- The supplementary set of control functions-parallel mode
- [[G0]]
- [[G1]] ESC 2/9 6/3 mosaic graphic set 
-- The mosaic character set-serial mode
-- The mosaic character set-parallel mode
- ESC 2/5 [ASIS[(5/x)]] alphageometric coding scheme  
-- ESC 2/5 (5/x) の complete code の指示・呼び出しは 
ESC 2/9 [VAR[F]] / ESC 2/13 [VAR[F]] の通常 [[G1]] の指示で終了 
-- [82] 終端バイト登録されておらず
- SI/SO 以外は ISO 2022 と同じ
- The primary set of graphic characters for international interactive Videotex
-- [81] [[ISO/IEC 646]] 系の何か
- The supplementary set of graphic characters for international interactive Videotex
-- [80] おそらく[[94集合]]終端バイト [N[6/2]]

[74] [SRC[PDF p.25]]

- full-screen attributes display controls - ESC 2/3 2/0 [VAR[Fe]]
- full-row attributes display controls - ESC 2/3 2/1 [VAR[Fe]]

[75] 通常状態の SI/SO [SRC[PDF p.26]]

- SO : mosaic reparatory [ 2/1, 7/14 ]
- SI : G0, SP, DELETE

;; [77] 制定当時の [[ISO 2022]] には[[96集合]]がなかった

[76] alphageometric option の SI/SO [SRC[PDF p.27]] 

- SO : (G1) geometric primitives [ 2/0, 7/15 ]
- SI : G0, SP, DELETE

[78] 
opcode (operational code) + associated data parameters

- opcode [ 4/0, 5/15 ]
- numeric data [ 6/0, 7/15 ] 
- 終端: 次の opcode, SI, SO, SS2, SS3, ESC
- control (status) opcode -> status sub-commands ([ 4/0, 7/15 ])

[79] 
DRCS
[SRC[PDF p.38]] 

[83] 
仕様書が見るからに未完成.

* T.101

-[140] [CITE@en[T.101 : International interworking for Videotex services]], [[tsbmail]], [TIME[2025-06-15T13:50:40.000Z]] <https://www.itu.int/rec/T-REC-T.101-198811-S/en>
-[13] [CITE@en[T.101 : International interworking for Videotex services]], [[tsbmail]], [TIME[2020-12-05T07:06:25.000Z]] <https://www.itu.int/rec/T-REC-T.101-199411-I/en>

[49] 
[[PDF]] は[[フォント]]が埋め込まれていないらしく[[非ASCII文字]]は信用してはいけない。

[27] 
[[Videotex]] は日米欧3規格の統合に失敗した結果
[[T.101]]
は3規格を「Data Syntax」と称して並列に規定することになりました。

;; [28] そして3規格すべて商業的に失敗しました。。。

- [2] [CITE[00000001.PDF - 137.pdf]], [TIME[2014-06-23T02:14:26.000Z]], [TIME[2020-12-05T06:20:29.654Z]] <https://www.itscj.ipsj.or.jp/iso-ir/137.pdf>
- [3] [CITE[00000001.PDF - 071.pdf]], [TIME[2014-06-23T02:18:21.000Z]], [TIME[2020-12-05T06:20:49.313Z]] <https://www.itscj.ipsj.or.jp/iso-ir/071.pdf>
- [4] [CITE[00000001.PDF - 070.pdf]], [TIME[2014-06-23T02:18:19.000Z]], [TIME[2020-12-05T06:21:43.569Z]] <https://www.itscj.ipsj.or.jp/iso-ir/070.pdf>
- [5] [CITE[00000001.PDF - 132.pdf]], [TIME[2014-06-23T02:14:17.000Z]], [TIME[2020-12-05T06:22:03.270Z]] <https://www.itscj.ipsj.or.jp/iso-ir/132.pdf>
- [6] [CITE[00000001.PDF - 134.pdf]], [TIME[2014-06-23T02:14:20.000Z]], [TIME[2020-12-05T06:22:20.129Z]] <https://www.itscj.ipsj.or.jp/iso-ir/134.pdf>
- [7] [CITE[00000001.PDF - 135.pdf]], [TIME[2014-06-23T02:14:22.000Z]], [TIME[2020-12-05T06:22:37.493Z]] <https://www.itscj.ipsj.or.jp/iso-ir/135.pdf>
- [8] [CITE[00000001.PDF - 133.pdf]], [TIME[2014-06-23T02:14:18.000Z]], [TIME[2020-12-05T06:23:00.539Z]] <https://www.itscj.ipsj.or.jp/iso-ir/133.pdf>
- [9] [CITE[00000001.PDF - 073.pdf]], [TIME[2014-06-23T02:18:25.000Z]], [TIME[2020-12-05T06:23:23.190Z]] <https://www.itscj.ipsj.or.jp/iso-ir/073.pdf>
- [10] [CITE[00000001.PDF - 056.pdf]], [TIME[2014-06-23T02:17:52.000Z]], [TIME[2020-12-05T06:23:43.100Z]] <https://www.itscj.ipsj.or.jp/iso-ir/056.pdf>
- [11] [CITE[00000001.PDF - 136.pdf]], [TIME[2014-06-23T02:14:24.000Z]], [TIME[2020-12-05T06:24:04.576Z]] <https://www.itscj.ipsj.or.jp/iso-ir/136.pdf>
- [18] [CITE[null]], [TIME[2014-06-23T02:14:09.000Z]], [TIME[2020-12-05T09:32:51.518Z]] <https://www.itscj.ipsj.or.jp/iso-ir/128.pdf>


[1] [CITE@en[Videotex character set - Wikipedia]], [TIME[2020-12-04T00:34:29.000Z]], [TIME[2020-12-05T06:14:06.372Z]] <https://en.wikipedia.org/wiki/Videotex_character_set>

[12] [CITE@en[Viewdata - Wikipedia]], [TIME[2020-11-21T02:02:06.000Z]], [TIME[2020-12-05T06:24:38.609Z]] <https://en.wikipedia.org/wiki/Viewdata>

[141] 
関連: [[ISO/IEC 8859-8]]

** VideotexString


[20] 
"complete code" environment 
([[ISO/IEC 2022]] complete coding environment)
を切り替える [CODE(charname)@en[DOCS]]
[SRC[T.101 PDF1 p.18, p.20, p.41]]:

- [CODE(charname)@en[ESC]] 2/5 4/3 : Data Syntax I 
- [CODE(charname)@en[ESC]] 2/5 4/4 : Data Syntax II
- [CODE(charname)@en[ESC]] 2/5 4/1 : Data Syntax III 
- [CODE(charname)@en[ESC]] 2/5 4/0 : [[ISO/IEC 2022]]
- その他 [[ISO/IEC 9281]] で登録されたもの

[21] 
各 Data Syntax から
[CODE(charname)@en[PCD]] 
を使って
[[ISO/IEC 9281]] picture coding environment
の
audio mode,
photographic mode,
VEMMI mode
を利用可能。
[SRC[T.101 PDF1 p.41]]

[19] 
[[ASN.1]]
[DFN[VideotexString]]:
[[ISO/IEC 2022]],
Data Syntax I,
Data Syntax II,
Data Syntax III
[CODE(charname)@en[DOCS]] で相互に切替可能。
[SRC[T.101 PDF1 p.41]]

[29] 3規格を識別するのみならず相互切り替え可能にする必要性はあったのか、
需要はあったのか、実装可能だったのかは謎です。

[39] 
Data Syntax の方に言及がない
[[ISO/IEC 9281]] picture coding への対応も、
実態はあったのでしょうかね?

[40] DI で識別される Data Syntax I と 
[CODE(charname)@en[PCD]] で始まる [[ISO/IEC 9281]]
は区別可能だけどアーキテクチャとしておかしい。
また Data Syntax I から他に切り替える時どこにどう
[CODE(charname)@en[DOCS]]
を挿入すればいいのか何も書いていない。
本体の状態遷移図に従うなら DI で識別されるバイト長が満了した後に
[CODE(charname)@en[DOCS]] や [CODE(charname)@en[PCD]]
を書けるということか。

[41] 本体の状態遷移図には Data Syntax I に切り替えたらまず
rank
を書く(?)とあるが、その構文が本体にも附属書にも書いてなく謎。
(rank という概念は Data Syntax I に存在してはいるのだが。)

[113] Data Syntax II の profile は状態遷移図に書いてあり、
附属書にも規定があるのですが。。。

** terminal identification 

[46] 
端末状態と照会・回答できる。 Data Syntax 共通。
[SRC[PDF1 p.36, PDF1 p.102, PDF2 p.379, PDF3 p.119]]




host 1/15 2/0 4/0 

terminal 1/15 2/0 [VAR[bytes]]

[VAR[bytes]] は [ [N[4/0]], [N[7/15]] ] の列

[VAR[bytes]] は [N[4/0]] で終端するか、
[N[7/15]] [ [N[6/0]], [N[7/15]] ]* [ [N[4/0]], [N[5/15]] ]
で終端する。




[64] 
Data Syntax II には [N[1/15]] に他の機能もある

** Data Syntax I

[22] 
Data Syntax I (CAPTAIN) - 日本向け
[SRC[PDF1 p.102]]

[31] 4モードあって、
DI (Data Identifier) 
で識別します。

- character mode
-- DI(C) 0b00100000
- transparent mode
-- DI(T) 0b00110000
-- DI(T-CNT) 0b00111111 (継続を表す)
- sound mode
-- DI(S) 0b01000001
- message mode
-- DI(M) 0b01000000

[32] 
[VAR[DI]], [VAR[LI]], [VAR[bytes]]
を1セットとして繰り返します。

[33] 
LI (Length Indicator) 
は
[ [N[0]], [N[254]] ]
の1バイトでバイト長を表すか、
[N[255]] の[[バイト]]に続く[[大エンディアン]]2バイトでバイト長を表します。
([ [N[0]], [N[254]] ] を1+2バイトで表すのも禁止されていない。)


[30] [[character mode]] (初期状態)

- [[ISO/IEC 2022]] [[7ビット符号]]、[[8ビット符号]]
- [[C0]] [N[4/9]]
- [[C1]] [N[4/4]]
- [[G0]] = [[GL]] (初期値 Japanese-Kanji set)
- [[G1]] (初期値 Primary set)
- [[G2]] = [[GR]] (初期値 Display control command set)
- [[G3]] (初期値 DRCS 1)
- [[固定シフト]]、[[単独シフト]]、[[指示シーケンス]]
- [[制御シーケンス]]
- [[94集合]] [N[4/10]] Primary Character set
-- [[JIS X 0201]] [[ラテン文字用図形文字集合]]相当
- [[94集合]] [N[4/9]] Katakana Character set
-- [[JIS X 0201]] [[片仮名用図形文字集合]]相当
- [[94集合]] [N[3/3]] Mosaic I set
-- [115] [[ARIB STD-B24]] の [N[3/3]] (モザイク集合B) 相当
- [[94集合]] [N[6/3]] Mosaic II set
- [[96集合]] [N[3/8]] Display Control set 
- [[96集合]] [N[5/7]] PDI set
- [[96集合]] [N[3/9]] MVI set
- [14] [[94[SUP[2]]集合]] [N[4/2]] [[改訂][IRR]] [N[4/0]] Kanji Character set (Japanese-Kanji Character Set)
-- [[JIS X 0208-1990]] 相当 + [[ARIB外字]]
-- [16] 「[[T.52]] との違い」
--- [24] 84区5点と6点は使用しない
---- [25] と書かれているが符号表にはこれらも掲載されている
--- [26] 92区から94区に169文字追加
- [[94集合]] [N[2/0]] [N[4/1]] : [[DRCS]] I set
- [[94[SUP[2]]集合]] [N[2/0]] [N[4/0]] : [[DRCS]] II set


[35] 
transparent mode は PDU (Phorographic Data Unit) の連続。

[36] 
PDU は opcode (1[[バイト]])、[VAR[LI]]、[VAR[bytes]]。

[34] 
DI(T) / DI(T-CNT) の境界と PDU の境界が一致していなければならないのか、
そうでないのかよくわからない。一致しなければならないとすると
DI(T-CNT) は不要に思えるので、一致しなくても良いのかも。

[38] 
sound mode

- [[ISO/IEC 2022]] [[7ビット符号]]/[[8ビット符号]]
- [[C0]]
- [[GL]] [[96[SUP[2]]集合]] Sound tone set
- [[C1]] Sound control

[44] Sound tone set : 
第1バイト Sound Tone Set (Pitch)、
第2バイト Sound Tone Set (Duration)

[45] Sound control  

,*  ,*8  ,*9
,* 0,SMC ,SLV
,* 1,SMP ,
,* 2,SRP ,
,* 3,    ,
,* 4,EMC ,
,* 5,EPT ,
,* 6,    ,
,* 7,    ,
,* 8,LBL ,LRT
,* 9,JMP ,
,*10,RPT ,
,*11,BRA ,
,*12,CTM ,

引数付き

- SMC 3/0 3/11 3/N 3/11
- SMP 3/P 3/11
- SRP 3/P 3/11
- LBL 3/N 3/11
- JMP 3/N 3/11
- RPT 3/M 3/11 3/N 3/11
- BRA 3/M 3/11 3/N 3/11
- SLV 3/L 3/11
- CTM 3/P 3/11
- LRT 3/N 3/11

(引数は1バイトとは限らない)

numeric parameter: [ [N[3/0]], [N[3/9]] ]+
delimiter: 3/11




[37] 
message mode 

- [[ISO/IEC 2022]] [[7ビット符号]]/[[8ビット符号]]
- [[C0]]
- [[C1]]
- [[GL]] = [[G0]]
- [[LS0]] Katakana character 
- [[LS1]] Japanese-Kanji character
- [[GR]] Primary character


[47] 
[[C0]] 引数付き

- 1/15 NSR >>36
- 1/4 KMC [VAR[P]]
- 1/12 APS [VAR[row]] [VAR[column]] (cursor position) 
-- 下位6ビット

[48] 
[[message mode]] の [[C1]] は [[character mode]] の [[C1]] の[[部分集合]]

[23] 
[[C1]] の [CODE(charname)@en[P-MACRO]] [N[9/5]] は
[[ARIB STD-B24]] の [CODE(charname)@en[MACRO]]
相当 + [CODE(charname)@en[P-MACRO]] [N[4/2]] [VAR[P]] でマクロ文を返送要求
(ただしこちらは[[96集合]]で [VAR[P]] は [N[2/0]] ... [N[7/15]])


[42] 
1バイト (左側) の[[引数]]が続く[[C1制御文字]]

- COL
- SZX 
- FLC
- CDC

[43] 
特殊文字の集合
Display Control set,
PDI set,
MVI set:
opcode が [ [N[2/0]], [N[3/0]] ],
operand が [ [N[4/0]], [N[7/15]] ]。
opcode の後、
opcode 依存の構文・長さで operand が続く。

- 固定 operand
- single-value operand : 下位6ビットが符号なし整数を表す
- multi-value operand : 
下位6ビット中、上位3ビットと下位3ビットがそれぞれ値を表す。
後続 operand バイトも同じ。
1 - 8 バイト。
-- coordinate operand - 上位が X、下位が Y。第1バイト1つ目が符号±、
2つ目が最上位ビット (0.5)、最終バイト3つ目が最下位ビットで、
符号付き[[2の補数]]を表す。
-- 色: 3ビットの上位から GRB の順で unsigned color value in RGB color system
を表す。 unsigned binary decimal, 0 が lowest intensity、 1が highest intensity を表す。

Display Control set

- P-RESET fixed 1バイト
- P-DOMAIN fixed 2バイト
- LOGICAL-PEL multi-value 2バイト
- DISPLAY MODE fixed 1バイト
- P-TEXT fixed 2バイト / multi-value 1バイト
- RASTER multi-value 1バイト
- HEADER RASTER multi-value 1バイト
- SET LUT single-value 1バイト / multi-value 1バイト
- P-BLINK single-value 2バイト / fixed 3バイト
- AREA multi-value 2バイト
- SET FRAME single-value 2[VAR[n]] ([VAR[n]] = # of frames)
- ASSIGN FRAME signle-value 1バイト

Display Control Command Set

,*  ,* 2         ,* 3  
,* 0,            ,
,* 1,P-RESET     ,
,* 2,P-DOMAIN    ,
,* 3,LOGICAL PEL ,
,* 4,DISPLAY MODE,P-TEXT
,* 5,AREA
,* 6,SET FRAME
,* 7,ASSIGN FRAME
,* 8,            ,RASTER HEADER
,* 9,            ,RASTER
,*10,            ,SET LUT
,*11,            ,
,*12,P-WAIT      ,P-BLINK
,*13,            ,
,*14,            ,
,*15,            ,

[N[4/0]] - [N[7/15]] NUMERIC DATA




** Data Syntax II

[50] 
Data Syntax II は欧州向け。

[51] 
VPDE (Videotex Presentation Data Element) の連続。

[52] 
VPDE は VPCE の後に VSCE (Videotex Service Control Element)。

[53] 
VPCE (Videotex Presentation Control Element)
は
[CODE(charname)@en[US]] = [N[1/15]] 
のあとに 
[VAR[P]],
[VAR[P]] は:

- [N[4/0]] - [N[7/15]] : alphamosaic data
-- ALPHAMOSAIC display data
- [N[2/0]] - [N[2/15]] : management data
-- 2/0 & 2/1 TERMINAL FACILITY IDENTIFIER
-- 2/3 Define DRCS
-- 2/6 Define COLOUR
-- 2/13 Define Format
-- 2/14 TIMING CONTROL
-- 2/15 RESET 
- [N[3/0]] - [N[3/15]] : other data
-- 3/0 Reserved for Geometric display data
-- 3/1 GEOMETRIC display data (3D)
-- 3/2 GEOMETRIC display data
-- 3/4 PHOTOGRAPHIC pixel data
-- 3/5 PHOTOGRAPHIC table data
-- 3/11 SOUND
-- 3/12 Reserved for private use
-- 3/14 TELESOFTWARE (Processable) data
-- 3/15 TRANSPARENT data

[56] [SRC[PDF2, PDF2 p.49, p.53]]

- [[7ビット符号]]/[[8ビット符号]]
- [[C0]] = The primary control function set
- [[C1]] = supplementary control function set 2種のいずれかが既定値
-- ESC 2/2 4/0 serial supplementary control function set
-- ESC 2/2 4/1 parallel supplementary control function set
--
[65] 
parallel/serial C1 切り替えで動作モードが変化
[SRC[PDF2 p.6]]
- [[GL]] = [[G0]] = The Latin primary set of graphic characters
- [[G1]] = The second supplementary set of mosaic characters
- [[GR]] = [[G2]] = The Latin supplementary set of graphic characters
- [[G3]] = The third supplementary set of mosaic characters
- L-set = [[96集合]] The first supplementary set of mosaic characters
-- [116] [[終端バイト]]未登録
- [[固定シフト]]、[[単独シフト]]、[[指示シーケンス]]
- [[制御シーケンス]]
- [[94集合]] [N[4/0]] Latin Primary set 
-- [61] [[ISO/IEC 646の版]]相当の自由度
-- [60] [[終端バイト]]は本来 [[ISO/IEC 646]] [[旧IRV]]
- [[94集合]] [N[6/3]] Secondary mosaic set
- [[94集合]] [N[6/2]] Supplementary graphic set
- [[94集合]] [N[6/4]] Third supplementary mosaic set
- [[94集合]] [N[2/1]] [N[4/0]] Greek Primary set of graphic characters
- [[94集合]] [N[6/11]] Arabic Primary set of graphic characters
- [[94集合]] [N[4/8]] Hebrew Supplementary set of graphic characters
- [[94[SUP[2]]集合]] [N[4/5]] Chinse coded ideogram set for communication
-- [15] [[ISO-IR 165]]
- [[94集合]] [N[2/0]] [N[4/1]] Chinese graphic DRCS
- [[94集合]] [N[2/0]] [N[4/0]] Chinese character DRCS


[55] L-set [SRC[PDF2 p.40]]

- L-set に固定シフト (L-set activation)
-- "mosaic" (MBK MSR MSG MSY MSB MSM MSC MSW)
--- serial C1-controls [N[5/0]] - [N[5/7]]
--- 次の row の先頭で G-set にシフトする
- L-set から G-set にシフト (L-set deactivation)
-- FOREGROUND COLOUR "alpha" (ABK ANR ANG ANY ANB ANM ANC ANW)
--- serial C1-controls [N[4/0]] - [N[4/7]]
-- parallel C1-set の呼び出し
-- entering new line
-- [[GL]] に[[G集合]]の呼び出し

[117] row (line) の先頭でリセットされるというのが、
特定の符号だけではないらしく厄介

[118] 
G に戻るというのが G0/G1/G2/G3 のどれかではないので、
L に移動したときの前の状態を覚えておかないといけないっぽい

[57] [[C0]]

- 0/14 SO
- 0/15 SI
- 1/2 RPT
- 1/9 SS2
- 1/11 ESC
- 1/13 SS3
- 1/15 APA = US
- など

;; [114] [[終端バイト]] [N[4/10]]

[54] 引数付き[[制御文字]]

- RPT [VAR[P]] (下位6ビット)
- APA [VAR[P]] [VAR[P]] (各下位6ビット)

[58] 
attributes 
FOREGROUND COLOUR,
BACKGROUND COLOUR, 
LINED, 
SIZE, 
FLASH, 
CONCEAL, 
INVERT,
WINDOW/BOX

- ESC 2/3 2/0 (Fe) = full screen attributes
- ESC 2/3 2/1 (Fe) = full row attributes

[VAR[Fe]] は parallel C1 set の [[ESC Fe]] の[[ビット組合せ]]、
例えば [N[4/1]] が Red foreground を表す。



[66] 
US 2/3 DRCS 関係 [SRC[PDF2 p.248]]

- US 2/3 2/0 [VAR[ICS]] [VAR[SDC]] [VAR[SCM]] [VAR[SSA]]
-- 引数すべて省略可能
-- [VAR[ICS]] = 2/[VAR[h]] [VAR[F]] ([VAR[F]] は[[指示]]用の[[中間バイト]] (なし、 [N[2/0]] 可能) + [[終端バイト]])
-- [VAR[SDC]] は 3/[VAR[h]] 4/[VAR[h]] 3/[VAR[h]] 4/[VAR[h]]
-- [VAR[SCM]] は 5/[VAR[h]]
-- [VAR[SSA]] は 6/[VAR[h]]
- pattern transfer unit = US 2/3 [VAR[Y]] [VAR[pattern data]]
-- [VAR[Y]] は[[ビット組合せ]] [ [N[2/1]], [N[7/14]] ]
-- [VAR[pattern data]]

[59] 
Geometric なデータの符号化
[SRC[PDF2 p.175]]

primitive は opcode の後に operand を何個かで表す。

opcode は [ [N[2/0]], [N[3/15]] ]

operand は [ [N[4/0]], [N[7/15]] ] または文字列

文字列 character string は 
[CODE[SOS]] [N[9/8]]
から始まり 
[CODE[ST]] [N[9/12]]
で終わる

;; [119] これは serial/parallel [[C1]] にはなく、別

[68] PHOTOGRAPHIC
[SRC[PDF2 p.223]] 

- [[C0]] videotex control codes
- [ [N[2/0]], [N[3/15]] ] photovideotex parameters
- [ [N[4/0]], [N[7/15]] ] Pixel Data



[69] 
TELESOFTWARE
[SRC[PDF2 p.322]]

TDU = CI field、LI field、Parameter field

ただし basic kernel (という実装水準) は一部 CI field のみの TDU を使う。

CI (Command Identifier) 種別を表す

LI (Length Indicator) 長さを表す。 1バイトで [ [N[0]], [N[254]] ]、
3バイト (先頭バイト [N[15/15]]) で [ [N[255]], [N[65534]] ]

Parameter field は LI で指定された長さ。

[70] basic kernel のとき CI のみ: CI = 3/1, 3/2, 3/8, 3/6


[67] 
TRANSPARENT = US 3/15 
[SRC[PDF2 p.262]]

不透明データ。最初のバイト [VAR[N]] が長さを表す。

- [VAR[N]] = 0 : 無制限
- [VAR[N]] = [ [N[1]], [N[254]]] : バイト値の長さ
- [VAR[N]] = 255 : 未定義

バイト値が指定されていれば、 [VAR[N]] の次から数え始めてそのバイト数で終了。

バイト値に関わらず、次の VPCE が検知されたら終了 (中断)。

[CODE[US]] が出現すると次の VPCE とみなされる。回避するには2連続にする。
バイト数カウントは1バイト分になる。


[62] 
状態リセット: 各種状態 + 文字コード状態を変更
[SRC[p.264]] 

- General Display Reset
-- US 2/15 4/1 : serial C1 set を呼び出し
-- US 2/15 4/2 : parallel C1 set を呼び出し
-- Reset Control and Graphic Sets 相当の操作
-- その他状態リセット
- Reset Control and Graphic Sets 
-- 既定の図形文字集合を指示
-- G0 = GL
-- G2 = GR
-- alpha-mosaic data 状態に
-- US 2/15 4/3 : serial C1 set を呼び出し
-- US 2/15 4/4 : parallel C1 set を呼び出し
- Service Break to Row X
-- G0 = primary set of graphic characters
-- G2 = supplementary set of graphic characters
-- G0 = GL
-- G2 = GR
-- US 2/15 4/0 [VAR[RN]] : serial C1 set を呼び出し
-- US 2/15 4/5 [VAR[RN]] : parallel C1 set を呼び出し
-- [VAR[RN]] = [ [N[4/0]], [N[7/15]] ] : row (下位6ビット)
-- この後、 US 2/15 4/15 で変更前の状態にリセット


[63] [CODE[DOCS]] の直後にはプロファイルを記述する [SRC[p.398, PDF2 p.1]]

- ESC 2/5 4/4 [VAR[profile]] 4/0

[VAR[profile]]:

- [N[6/0]] alphamosaic profile 1
-- [[7ビット符号]]
- [N[6/1]] alphamosaic profile 2
-- [[7ビット符号]]
-- serial
- [N[6/2]] alphamosaic profile 3
-- [[7ビット符号]]
-- serial
- [N[6/3]] alphamosaic profile 4
-- [[7ビット符号]]
-- parallel
- [N[6/4]] alphamosaic profile 5
-- [[7ビット符号]]
-- parallel
- [N[6/8]] geometric profile x 1
- [N[6/9]] geometric profile x 2
- [N[7/14]] [VAR[P]] ASCII display mode 
-- [VAR[P]] = [ [N[4/1]], [N[4/5]] ]

[VAR[profile]] は display mode ごと (alphamosaic, geometric, ASCII) 複数可


** Data Syntax III

[71] 北米向け (NAPLPS)

[72] [SRC[PDF3 p.8, p.109]]

- [[ISO/IEC 2022]] [[7ビット符号]]/[[8ビット符号]]
- C0 ESC 2/1 4/11
- C1 ESC 2/2 4/6
- GL = G0 primary set
- GR = G1 PDI
- G2 supplementary set
- G3 mosaic
- [[94集合]] 4/2 primary character set
- [[94集合]] 7/12 supplementary character set
- [[96集合]] ESC I 5/7 : PDI
- [[96集合]] ESC I 7/13 : Mosaic set
- [[96集合]] ESC I 7/10 ESC I 2/0 7/10 : Macro set
- [[96集合]] ESC I 7/11 ESC I 2/0 7/11 : DRCS
- [[96集合]]の [VAR[I]] は 2/9, 2/10, 2/11 / 2/13, 2/14, 2/15
- [[固定シフト]]、[[単独シフト]]、[[指示シーケンス]]
-- LS1R LS2R LS3R に ESC 7/14 7/13 7/12 のほか、 ESC 6/11 6/12 6/13
- [[ISO/IEC 9281]] [[PCD]]

[120] 
4つの[[96集合]]は元々当時の [[ISO 2022]] に違反した独自仕様で
[[94集合]]用[[指示シーケンス]]を使っていたらしい。
現在は[[終端バイト]]4つとも他の関係ない[[94集合]]が登録されている。

[121] 
[[ISO 2022]] に[[96集合]]の概念が追加されて以後[[96集合]]用の[[指示シーケンス]]を使うことになり、
以前のものは互換用の扱いになったっぽい。
[[96集合]] [N[7/13]] は [[ISO-IR]] に登録されている。
[[96集合]] [N[5/7]] は [[ISO-IR]] で登録されていないが、
予約されている ([[図形文字集合]]ではないためか)。
[N[7/10]]、[N[7/11]] は未登録。

[122] 
[N[7/10]]、[N[7/11]] は [[ISO 2022]] に [[DRCS]] の概念が追加されて以後、
[[DRCS]] 扱いにすることになったらしく、[[終端バイト]]の前に
[N[2/0]] が挿入されることになった。
そこで[[指示シーケンス]]は (当初仕様では) 両者を併記することになったらしい。
(それは未対応の[[指示シーケンス]]は無視される(だけで無害)という[[エラー処理]]を想定しているらしい。
そのような規定は [[ISO/IEC 2022]] にも [[T.101]] にも見当たらないが。
[SEE[ [[ISO/IEC 2022]] のエラー処理の項 ]])
ともかくこの2つの[[集合]]は4種類の[[指示シーケンス]]が存在することに。

[123] つまり旧式扱いになっている[[終端バイト]]は登録も予約もされず放置されたらしい。
しかし [[NAPLPS]] の実装は全種類対応しなければならない 
(将来的には旧シーケンスは廃止する予定らしいことが書かれている)。


** audio data syntax

[84] 
[[ISO/IEC 9281]] [[PCD]] (識別子 2/4)
または
[[ISO/IEC 2022]] [CODE[DOCS]]
でこの構文に切り替えられる。
[SRC[PDF3 p.120]]

[85] 
[[ISO/IEC 2022]] [CODE[DOCS]] を使う場合の構文が明記されていないが、
結局 [[PCD]] を使うということか?

** photographic data syntax

[86] 
[[ISO/IEC 9281]] [[PCD]]
または
[[ISO/IEC 2022]] [CODE[DOCS]]
でこの構文に切り替えられる。
[SRC[PDF3 p.131]]

- PM 2/3
- PI 04/00 - 07/15
-- 例えば JPEG 04/00

[87] 
画像は複数 PE に分割可能、
中途なら次のバイトは ESC 7/0 CMI[SUB[p]]、
完了なら次のバイトは ESC or US


* T.107

- [88] [CITE@en[T.107 : Enhanced man machine interface for videotex and other retrieval services (VEMMI)]], [[tsbmail]], [TIME[2022-05-07T10:17:59.000Z]] <https://www.itu.int/rec/T-REC-T.107-199508-I/en>

[89] 
[[ISO/IEC 9281]] [[PCD]]
または
[[ISO/IEC 2022]] [CODE[DOCS]]
でこの構文に切り替えられる。
[SRC[PDF p.97]]

ISO/IEC 9281 CMI

-PM = 2/5
-PI = 4/0

[90] [[T.51String]]



* NAPLPS


[91] [[ISO/IEC 2022]] の [CODE(char)[[[DOCS]]]] で 
[CODE(char)[[[[[ESC]] 2/5 4/1]]]] で[[指示]]・[[呼び出し]]される[[符号化体系]]は、
[[ISO-IR]] 108 です。 (←謎説明)

[ABBR[NAPLPS]] = Nothern American Presentation Level Protocol Syntax
(北米ビデオテックス通信規約)。

[92] 
[[AT&T]] がカナダ政府の Telidon system (1970年代後半
から1980年代前半に使われていた。) を基に開発した
[ABBR[PLP]] (Presentation Level Protocol) が1983年11月に
米国 ANSI X3.110‐1983 や加国 CSA T500‐1983 として標準化されました。

[93] 
日本語機能仕様 NAPLPS (NAPLPS JAPANESE LANGUAGE)
は日本語機能を追加したもので、1987年9月制定。

[94] 
いわゆる画像符号化って奴ですね。 Alpha geometric data
であって dot の集合じゃありません。 Vector 
画像と言われる奴の仲間ですね。

**ISO-IR 108

[95] 
『Syntax of the North American Videotex/Teletext Presentation Level 
Protocol (NAPLPS)』。
ANSI X3.110‐1983 や CSA T500‐1983 で定義。

-[[C0文字集合]]: 書式効果, 符号拡張制御, 転送制御, 機器制御
-[[C1文字集合]]: テキスト書式上の制御及びマクロ, [[DRCS]] 
プログラム可能 texture mask, 非保護情報領域生成
-第1文字集合: ANSI X3.4‐1977 ([[ASCII]])・CSA Z243.4‐1973 (94文字)
-補遺文字集合: 合成アクセント・発音区別符・ラテン基底字母 (CCITT 
Recommendation S.100‐1980 と追加文字)
-Mosaic 集合: 絵情報を生成する。 (65文字)
-任意の図形記号の downline 読み込み用 [[DRCS]] 集合 (96文字)
-2列〜7列に割り当てる追加集合:
--Picture Description Instruction ([ABBR[PDI]]; 図形描画命令) 集合:
絵情報の実行可能描画機能を提供 (96文字)
--表現層文字の符号表現の文字列を downline 読み込みするマクロ集合 
(96文字)

[96] 
[[ISO/IEC 2022]] から [CODE(char)[[[ESC 2/5 4/1]]]] 
で[[指示]]・[[呼び出し]]され、
[CODE(char)[[[ESC 2/5 4/0]]]] で ISO/IEC 2022 
を指示・呼び出しします。

7ビット符号の時は[[固定シフト]] + [[GL]] と 
[CODE(char)[ESC [VAR[[[Fe]]]]]] を使い、
8ビット符号の時は [[GR]] と [[CR]] を使います。 
G2 と G3 は[[単独シフト]]が使えます。 
([CODE(char)[[[SS2]]]] = [CODE(char)[1/9]], 
[CODE(char)[[[SS3]]]] = [CODE(char)[1/13]])
(固定シフトも使えます。) ASCII は右には呼び出せません。

[124] 
[CITE[00000001.PDF - 108.pdf]], [TIME[2022-11-02T03:16:14.000Z]], [TIME[2022-12-11T05:15:52.220Z]] <https://itscj.ipsj.or.jp/ir/108.pdf>

**文字集合

[97] 
標準状態では GL = G0 = ASCII, GR = G1 = [ABBR[PDI]], 
G2 = 補遺集合, G3 = Mosaic が指示されています。
,IR  ,                ,指示               ,指示(旧)
,135 ,C0              ,ESC 02/01 04/11
,136 ,C1              ,ESC 02/02 04/06
,    ,ASCII           ,ESC I4 04/02    
,    ,PDI             ,ESC I6 05/07       ,ESC I4 05/07
,    ,マクロ          ,ESC I6 02/00 07/10 ,ESC I4 02/00 07/10
,    ,DRCS            ,ESC I6 02/00 07/11 ,ESC I4 02/00 07/11
,128 ,補遺            ,ESC I4 07/12       ,
,129 ,Mosaic          ,ESC I6 07/13       ,ESC I4 07/13
-[VAR[I4]] = 02/08 / 02/09 / 02/10 / 02/11
-[VAR[I6]] = 02/13 / 02/14 / 02/15

[98] 
PDI の終端バイト(旧) 05/07 は [[ISO-IR]] で、互換のため
割り当てないとされています。 (PDI は図形文字集合でないので、
ISO-IR に登録してもらえなかったのかもしれません。)

[99] 
96集合の指示の I6 の部分は互換性のため、実装は I4
になっていても読み込むのが良いんだそうな。 (94集合では
全然違う集合が割り当てられてますよ。おいおい。)

[100] 
補遺集合中の[[結合文字]]は、最初の文字が結合文字 
([[現在位置の前進を伴わない文字]]) で、
2番目の文字が[[基底文字]]です。
[SEE[ [[非spacing文字]] ]]

[101] 
[CODE(char)[[[NSR]]]] ([CODE(char)[1/15]]) 
で文字集合の指示・呼び出しは標準状態に戻ります。

**識別子

[102] 
[[MIME]] などの Internet [[媒体型]]は [DFN[[CODE(MIME)[image/naplps]]]]
を使います。 [DFN[[CODE(MIME)[version]]]] 引数が必須で、値の形式は
[CODE(ABNF)[4*DIGIT]] (規格発行年) のようです。

[103] ファイル名の[[拡張子]]は [DFN[[CODE(file)[.pdi]]]] を使います。

** メモ


-[104] NAPLPSについて <http://uclsun.ucl.co.jp/naplps/naptech.html>
-[105] [[IANAREG]] <http://www.isi.edu/in-notes/iana/assignments/media-types/image/naplps>
-[106] <http://simtel.man.szczecin.pl/pub/pd/48197.html>
- [107] 2002-10-21 (月) 20:21 ''[[名無しさん]]'': ESC 02/06 s 04/00 を ASCII, ESC 02/06 s 04/01 を NAPLPS に使う (s = S7S(3/4) / S7T(3/5) / S8S(3/6) / S8T(3/7)) ってのがあるらしいです。
- [108] 2002-10-21 (月) 20:21 ''1'': ほんとだとすると ISO/IEC 2022 と全然互換性が無いと思うんですが。
- [109] >>108 もしかすると (というかたぶん) [[IRR]] が定義される前の時代にそうなったんでは。
- [110] とりあえず [[IRR]] では ESC 2/6 3/* はつかってないので、 ISO/IEC 2022 と共存は出来ますな。
- [111] 独自拡張の[[更新番号]]で Fp == 3/* を使っているという噂も聞きますから、そういうのとは共存不可能ではありますが。


[112] [CITE[NAPLPS.TXT]], [TIME[2022-05-07T12:08:27.000Z]] <https://www.fileformat.info/format/naplps/spec/c08f9438d54b4149b7f9c4b92e197191/view.htm>

* IANA charset [CODE[ANSI_X3.110-1983]]

[126] 
[[IANA charset]] [DFN[[CODE[ANSI_X3.110-1983]]]] があります。
[SRC[>>125]]

[127] 
別名として
[DFN[[CODE[iso-ir-99]]]],
[DFN[[CODE[CSA_T500-1983]]]],
[DFN[[CODE[NAPLPS]]]],
[DFN[[CODE[csISO99NAPLPS]]]]
があります。
[SRC[>>125]]

[128] 
[[RFC 1345]] から登録されたものです。 [SRC[>>125]]


[REFS[

-
[125] 
[CITE[Character Sets]], [TIME[2024-06-06T16:55:46.000Z]], [TIME[2025-06-15T01:19:41.615Z]] <https://www.iana.org/assignments/character-sets/character-sets.xhtml>

]REFS]

** インターネットメールでの利用


[139] 
[[インターネットメール]]で [CODE[ansi_x3.110-1983]]
が出現することがあるようです。
[SRC[>>137]]

[REFS[

- [137] [CITE@en[character encoding - What should I do with emails using charset ansi_x3.110-1983? - Stack Overflow]], [TIME[2025-06-15T01:26:51.000Z]] <https://stackoverflow.com/questions/16044154/what-should-i-do-with-emails-using-charset-ansi-x3-110-1983>
-- [138] 
[CITE@en['ansi_x3.110-1983' is not a supported encoding name · Issue #28 · bertjohnson/OpaqueMail]], [TIME[2025-06-15T01:27:20.000Z]] <https://github.com/bertjohnson/OpaqueMail/issues/28>

]REFS]



** Web での利用

[130] 
なぜか [[Web]] でも利用事例があります。 [SRC[>>129]]

[131] 
対象データに偏りがあると考えられ、少数同士の比較が原因とみられるものの、
ある[[統計][Webの統計]]上は[[文字コード]]種別の上位に食い込むくらいに使われています。
[SRC[>>129]]

[132] 
実利用例を拾ってみるといずれも何らかの[[コピペ]]か何かの意図せぬ利用と思われます。


[133] [CITE@en[Nzxt Media Zone]], [TIME[2025-06-15T01:24:55.000Z]] <https://nzxtmediazone.com/>

>
[PRE[
<head><meta http-equiv="Content-Type" content="text/html; charset=ansi_x3.110-1983">
]PRE]

[134] [CITE@en[Pristine Baking Solutions - Home]], [TIME[2025-06-15T01:25:14.000Z]] <https://pristinebakingsolutions.com/en/home>

>
[PRE[
<meta charset="ansi_x3.110-1983">
]PRE]

[135] 
[CITE@en-US[Ruth Johnston]], [TIME[2016-12-11T10:48:03.000Z]], [TIME[2025-06-15T01:25:51.819Z]] <https://ruthjohnston.com/>

>
[PRE[
        <meta http-equiv="Content-Type" content="text/html; charset=ansi_x3.110-1983">
        <meta charset="utf-8">
]PRE]

[136] 
[CITE@ar-sa[This Site is Hosted By ExaHost]], [TIME[2022-02-14T03:49:16.000Z]], [TIME[2025-06-15T01:26:17.407Z]] <https://fireshieldq.com/>

>
[PRE[
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ansi_x3.110-1983">



<meta http-equiv="Content-Language" content="ar-sa">
]PRE]





[REFS[

- [129] 
[CITE@en[Usage Statistics and Market Share of ANSI_X3.110-1983 for Websites, June 2025]], [TIME[2025-06-15T01:21:40.000Z]] <https://w3techs.com/technologies/details/en-ansix31101983>

]REFS]

* メモ