Rev 164 | Rev 187 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 164 | Rev 183 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | ; |
13 | ; |
14 | ; 16 BIT FUNCTIONS |
14 | ; 16 BIT FUNCTIONS |
15 | ; |
15 | ; |
16 | ;========================================================================== |
16 | ;========================================================================== |
Line -... | Line 17... | ||
- | 17 | ||
- | 18 | ; 16-bit data |
|
- | 19 | org $+0x10000 |
|
- | 20 | ||
- | 21 | old_ints_h: |
|
- | 22 | dw 0x400 |
|
- | 23 | dd 0 |
|
- | 24 | dw 0 |
|
- | 25 | ||
- | 26 | kernel_restart_bootblock: |
|
- | 27 | db 1 ; version |
|
- | 28 | dw 1 ; floppy image is in memory |
|
- | 29 | dd 0 ; cannot save parameters |
|
- | 30 | ||
- | 31 | ||
- | 32 | align 32 |
|
- | 33 | ||
- | 34 | ; GDT TABLE |
|
- | 35 | ||
- | 36 | gdts: |
|
- | 37 | ||
- | 38 | dw gdte-$-1 |
|
- | 39 | dd gdts |
|
- | 40 | dw 0 |
|
- | 41 | ||
- | 42 | int_code_l: |
|
- | 43 | os_code_l: |
|
- | 44 | ||
- | 45 | dw 0xffff |
|
- | 46 | dw 0x0000 |
|
- | 47 | db 0x00 |
|
- | 48 | dw 11011111b *256 +10011010b |
|
- | 49 | db 0x00 |
|
- | 50 | ||
- | 51 | int_data_l: |
|
- | 52 | os_data_l: |
|
- | 53 | ||
- | 54 | dw 0xffff |
|
- | 55 | dw 0x0000 |
|
- | 56 | db 0x00 |
|
- | 57 | dw 11011111b *256 +10010010b |
|
- | 58 | db 0x00 |
|
- | 59 | ||
- | 60 | ; --------------- APM --------------------- |
|
- | 61 | apm_code_32: |
|
- | 62 | dw 0x10 ; limit 64kb |
|
- | 63 | db 0, 0, 0 |
|
- | 64 | dw 11011111b *256 +10011010b |
|
- | 65 | db 0x00 |
|
- | 66 | apm_code_16: |
|
- | 67 | dw 0x10 |
|
- | 68 | db 0, 0, 0 |
|
- | 69 | dw 10011111b *256 +10011010b |
|
- | 70 | db 0x00 |
|
- | 71 | apm_data_16: |
|
- | 72 | dw 0x10 |
|
- | 73 | db 0, 0, 0 |
|
- | 74 | dw 10011111b *256 +10010010b |
|
- | 75 | db 0x00 |
|
- | 76 | ; ----------------------------------------- |
|
- | 77 | ||
- | 78 | app_code_l: |
|
- | 79 | dw 0xFFFF;((0x80000000-std_application_base_address) shr 12) and 0xffff |
|
- | 80 | dw 0 |
|
- | 81 | db 0x40 |
|
- | 82 | db cpl3 |
|
- | 83 | dw G32+D32+0x6000+0x7; |
|
- | 84 | ||
- | 85 | app_data_l: |
|
- | 86 | dw 0xFFFF;(0x80000000-std_application_base_address) shr 12 and 0xffff |
|
- | 87 | dw 0 |
|
- | 88 | db 0x40 |
|
- | 89 | db drw3 |
|
- | 90 | dw G32+D32+0x6000+0x7; |
|
- | 91 | ||
- | 92 | graph_data_l: |
|
- | 93 | ||
- | 94 | dw 0x3ff |
|
- | 95 | dw 0x0000 |
|
- | 96 | db 0x00 |
|
- | 97 | dw 11010000b *256 +11110010b |
|
- | 98 | db 0x00 |
|
- | 99 | ||
- | 100 | tss0_l: |
|
- | 101 | ; times (max_processes+10) dd 0,0 |
|
- | 102 | gdte = $ + (max_processes+10)*8 |
|
- | 103 | ||
- | 104 | ; videomodes table |
|
- | 105 | gr_table: |
|
- | 106 | dw 0x112+0100000000000000b , 640 , 480 ; 1 |
|
- | 107 | dw 0x115+0100000000000000b , 800 , 600 ; 2 |
|
- | 108 | dw 0x118+0100000000000000b , 1024 , 768 ; 3 |
|
- | 109 | dw 0x11B+0100000000000000b , 1280 , 1024 ; 4 |
|
- | 110 | dw 0x112 , 640 , 480 ; 5 |
|
- | 111 | dw 0x115 , 800 , 600 ; 6 |
|
- | 112 | dw 0x118 , 1024 , 768 ; 7 |
|
- | 113 | dw 0x11B , 1280 ,1024 ; 8 |
|
- | 114 | dw 0x13, 640, 480 ; 9 |
|
- | 115 | dw 0x12, 640, 480 ; 0 |
|
- | 116 | ||
- | 117 | ; table for move to extended memory (int 15h, ah=87h) |
|
- | 118 | movedesc: |
|
- | 119 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 120 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 121 | ||
- | 122 | db 0xff,0xff,0x0,0xa0,0x00,0x93,0x0,0x0 |
|
- | 123 | db 0xff,0xff,0x0,0x00,0x10,0x93,0x0,0x0 |
|
- | 124 | ||
- | 125 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 126 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 127 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 128 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
|
- | 129 | org $-0x10000 |
|
17 | 130 | ||
18 | putchar: |
131 | putchar: |
19 | ; in: al=character |
132 | ; in: al=character |
20 | mov ah, 0Eh |
133 | mov ah, 0Eh |
21 | mov bh, 0 |
134 | mov bh, 0 |
Line 137... | Line 250... | ||
137 | { |
250 | { |
138 | mov dx, row*256 + column |
251 | mov dx, row*256 + column |
139 | call setcursor |
252 | call setcursor |
140 | } |
253 | } |
Line 141... | Line 254... | ||
141 | 254 | ||
142 | pagetable_set: |
255 | ;pagetable_set: |
143 | ;eax - physical address |
256 | ;eax - physical address |
144 | ;es:di - page table |
257 | ;es:di - page table |
145 | ;ecx - number of pages to map |
258 | ;ecx - number of pages to map |
146 | or al, 7 |
259 | ; or al, 7 |
147 | @@: |
260 | ;@@: |
148 | stosd |
261 | ; stosd |
149 | add eax, 1000h |
262 | ; add eax, 1000h |
150 | loop @b |
263 | ; loop @b |
Line 151... | Line 264... | ||
151 | ret |
264 | ; ret |
152 | 265 | ||
153 | boot_read_floppy: |
266 | boot_read_floppy: |
154 | push si |
267 | push si |
Line 168... | Line 281... | ||
168 | jmp $ |
281 | jmp $ |
169 | @@: |
282 | @@: |
170 | pop si |
283 | pop si |
171 | ret |
284 | ret |
Line 172... | Line -... | ||
172 | - | ||
173 | ; 16-bit data |
- | |
174 | ; videomodes table |
- | |
175 | org $+0x10000 |
- | |
176 | gr_table: |
- | |
177 | dw 0x112+0100000000000000b , 640 , 480 ; 1 |
- | |
178 | dw 0x115+0100000000000000b , 800 , 600 ; 2 |
- | |
179 | dw 0x118+0100000000000000b , 1024 , 768 ; 3 |
- | |
180 | dw 0x11B+0100000000000000b , 1280 , 1024 ; 4 |
- | |
181 | dw 0x112 , 640 , 480 ; 5 |
- | |
182 | dw 0x115 , 800 , 600 ; 6 |
- | |
183 | dw 0x118 , 1024 , 768 ; 7 |
- | |
184 | dw 0x11B , 1280 ,1024 ; 8 |
- | |
185 | dw 0x13, 640, 480 ; 9 |
- | |
186 | dw 0x12, 640, 480 ; 0 |
- | |
187 | - | ||
188 | ; table for move to extended memory (int 15h, ah=87h) |
- | |
189 | movedesc: |
- | |
190 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
191 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
192 | - | ||
193 | db 0xff,0xff,0x0,0xa0,0x00,0x93,0x0,0x0 |
- | |
194 | db 0xff,0xff,0x0,0x00,0x10,0x93,0x0,0x0 |
- | |
195 | - | ||
196 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
197 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
198 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
199 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
- | |
200 | org $-0x10000 |
- | |
201 | 285 | ||
202 | ;========================================================================= |
286 | ;========================================================================= |
203 | ; |
287 | ; |
204 | ; 16 BIT CODE |
288 | ; 16 BIT CODE |
205 | ; |
289 | ; |