aboutsummaryrefslogtreecommitdiff
path: root/int21dos.h
diff options
context:
space:
mode:
authorEduardo Casino <mail@eduardocasino.es>2022-05-05 21:55:47 +0200
committerJavier <dev.git@javispedro.com>2022-05-08 22:19:18 +0200
commitbe314d2dc2846bdc08243892e66fa74aa47dcd78 (patch)
treee97748f18b372e993106775fefdeffa069e21832 /int21dos.h
parent83ad31a104384e8a2535d32e2405de03b04fc5f8 (diff)
downloadvbados-be314d2dc2846bdc08243892e66fa74aa47dcd78.tar.gz
vbados-be314d2dc2846bdc08243892e66fa74aa47dcd78.zip
Add unicode and NLS support
Diffstat (limited to 'int21dos.h')
-rw-r--r--int21dos.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/int21dos.h b/int21dos.h
index af22fea..790bd88 100644
--- a/int21dos.h
+++ b/int21dos.h
@@ -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';