diff options
author | Eduardo Casino <mail@eduardocasino.es> | 2022-05-05 21:55:47 +0200 |
---|---|---|
committer | Javier <dev.git@javispedro.com> | 2022-05-08 22:19:18 +0200 |
commit | be314d2dc2846bdc08243892e66fa74aa47dcd78 (patch) | |
tree | e97748f18b372e993106775fefdeffa069e21832 /int21dos.h | |
parent | 83ad31a104384e8a2535d32e2405de03b04fc5f8 (diff) | |
download | vbados-be314d2dc2846bdc08243892e66fa74aa47dcd78.tar.gz vbados-be314d2dc2846bdc08243892e66fa74aa47dcd78.zip |
Add unicode and NLS support
Diffstat (limited to 'int21dos.h')
-rw-r--r-- | int21dos.h | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -293,6 +293,24 @@ typedef _Packed struct dos_list_of_lists { uint8_t last_drive; } DOSLOL; +typedef _Packed struct dos_nls_table { + uint8_t table_id; + void __far *table_data; +} NLSTABLE; + +typedef _Packed struct file_char_table { + uint16_t size; // table size (not counting this word) + uint8_t unk1; // ??? (01h for MS-DOS 3.30-6.00) + uint8_t lowest; // lowest permissible character value for filename + uint8_t highest; // highest permissible character value for filename + uint8_t unk2; // ??? (00h for MS-DOS 3.30-6.00) + uint8_t first_x; // first excluded character in range \ all characters in this + uint8_t last_x; // last excluded character in range / range are illegal + uint8_t unk3; // ??? (02h for MS-DOS 3.30-6.00) + uint8_t n_illegal; // number of illegal (terminator) characters + uint8_t illegal[1]; // characters which terminate a filename: ."/\[]:|<>+=;, +} FCHAR; + static inline int drive_letter_to_index(char letter) { if (letter >= 'A' && letter <= 'Z') return letter - 'A'; |