]> pd.if.org Git - mmurtl/commitdiff
autocommit for file dated 1994-12-05 11:35:32
authorRichard Burgess <>
Mon, 5 Dec 1994 11:35:32 +0000 (11:35 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Mon, 17 Oct 2016 14:03:47 +0000 (14:03 +0000)
ossource/mosgdt.asm [new file with mode: 0644]

diff --git a/ossource/mosgdt.asm b/ossource/mosgdt.asm
new file mode 100644 (file)
index 0000000..3cb257c
--- /dev/null
@@ -0,0 +1,70 @@
+;   MMURTL Operating System Source Code\r
+;   Copyright 1991,1992,1993,1994 Richard A. Burgess\r
+;   ALL RIGHTS RESERVED\r
+;   Version 1,0\r
+.DATA\r
+.INCLUDE MOSEDF.INC\r
+\r
+;=============================================================================\r
+;\r
+; All the static GDT descriptors below are defined as shown on page\r
+; 2-5 of the 80386 System Software Writer's Guide.\r
+; Comments next        to each of the entries mean:\r
+;\r
+; Limit - 00:15 DW A WORD (16 bits) with LSW of the Linear Segment Limit\r
+; Base  - 00:15 DW A WORD (16 bits) with LSW of the Linear Segment Base\r
+; Base  - 16:23 DB A BYTE (8 bits) with MSB of the Linear Segment Base\r
+; ProtType      DB P/DPL/1/CRA or EWA/ Protection, Type, etc...\r
+; GranSizeLim   DB Granularity/Size for code/\r
+; Base  - 24:31 DB A BYTE (8 bits) with MSB of the Linear Segment base\r
+;\r
+;=============================================================================\r
+;Sel 00h\r
+PUBLIC GDT     DD 2 DUP (0h)           ;The first desc is always null\r
+\r
+;Sel 08\r
+OSCodeDesc     DW 0FFFFh                       ; Limit 15-0 (4Gb)\r
+                       DW 0000h                        ; Base  15-0\r
+                       DB 00h                          ; Base  23-16   ;10000h\r
+                       DB 10011010b            ; P(1) DPL(00) 1 1 C(0) R(1) A(0)\r
+                       DB 11001111b            ; G(1) D(1) 0 0 Limit[19-16]\r
+                       DB 00h                          ; Base  31-24\r
+\r
+;Sel 10h  - This the OS and User Data descriptor.\r
+\r
+DataDesc       DW 0FFFFh                       ;Limit (bits 0:15) at linear 00K\r
+                       DW 0000h                        ;base (bits 15:0)\r
+                       DB 00h                          ;base (bits 23:16)\r
+                       DB 10010010b            ;P(1) DPL(00) 1 0 E(0) W(1) A(0)\r
+                       DB 11001111b            ;G(1), B(1) 0 0 limit[19-16)\r
+                       DB 00h                          ;Base at 0 (bits 31:24)\r
+\r
+;Sel 18h - This is the user's code descriptor.\r
+\r
+CodeDesc       DW 0FFFFh                       ; Limit 15-0 (0FFFFh)\r
+                       DW 0000h                        ; Base  15-0\r
+                       DB 00h                          ; Base  23-16\r
+                       DB 10011010b            ; P(1)-DPL(00)-1-1-C(0)-R(1)-A(0)\r
+                       DB 11001111b            ; G(1) D(1) 0 0 Limit[19-16]\r
+                       DB 00h                          ; Base  31-24\r
+\r
+;Save these for the future...\r
+\r
+OSXtra0Desc    DD 0, 0         ;Sel 20h\r
+OSXtra1Desc    DD 0, 0         ;Sel 28h\r
+OSXtra2Desc    DD 0, 0         ;Sel 30h\r
+OSXtra3Desc    DD 0, 0         ;Sel 38h\r
+\r
+;WARNING: The rgCall Descriptors must never be moved from this location\r
+;        in the GDT. They describe system entry points that will become\r
+;        PUBLIC for external programs. The first PUBLIC call gate is\r
+;        selector 40h.\r
+\r
+;Sel 40\r
+\r
+PUBLIC rgCallDesc      DD (nCallGates*2) DUP (0)       ;Call Gates\r
+\r
+PUBLIC rgTSSDesc       DD (nTSS*2) DUP (0)             ;Task descriptors\r
+\r
+\r
+;--------- END OF MODULE ------------------------------\r