wok annotate syslinux/stuff/iso2exe/a20.c @ rev 24924
Add as & asxxxx
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Apr 13 10:27:34 2022 +0000 (2022-04-13) |
parents | c15bb3c9e12d |
children |
rev | line source |
---|---|
pascal@16069 | 1 #ifndef __A20 |
pascal@16069 | 2 #define __A20 |
pascal@16069 | 3 |
pascal@17161 | 4 static void dosshutdowna20(void) |
pascal@16069 | 5 { |
pascal@16069 | 6 #asm |
pascal@17450 | 7 call _dosshutdown |
pascal@17450 | 8 xor ax, ax // 30 |
pascal@17450 | 9 cmp ax, _a20buffer |
pascal@17450 | 10 je no_a20buffer |
pascal@17160 | 11 pusha // more than 1Mb => 286+ |
pascal@16069 | 12 mov cx, #9 // 2E..1E |
pascal@16069 | 13 a20z1: |
pascal@17450 | 14 push ax |
pascal@16069 | 15 loop a20z1 |
pascal@17450 | 16 push #0x9310 |
pascal@17450 | 17 push ax // 1A 0x100000 |
pascal@16069 | 18 push #-1 // 18 |
pascal@17450 | 19 push ax // 16 |
pascal@17450 | 20 push #0x9300+A20HOLDBUFFER/0x10000 |
pascal@17450 | 21 push ax // 12 A20HOLDBUFFER |
pascal@16069 | 22 push #-1 // 10 |
pascal@16069 | 23 mov cl, #8 // 0E..00 |
pascal@16069 | 24 a20z2: |
pascal@17450 | 25 push ax |
pascal@16069 | 26 loop a20z2 |
pascal@16069 | 27 mov ch, #0x10000/512 |
pascal@16069 | 28 push ss |
pascal@16069 | 29 pop es |
pascal@16069 | 30 mov si, sp |
pascal@17450 | 31 mov ah, #0x87 |
pascal@16069 | 32 int 0x15 |
pascal@16069 | 33 add sp, #0x30 |
pascal@16069 | 34 popa |
pascal@17450 | 35 no_a20buffer: |
pascal@16069 | 36 #endasm |
pascal@16069 | 37 } |
pascal@16069 | 38 |
pascal@17161 | 39 #define dosshutdown dosshutdowna20 |
pascal@17161 | 40 |
pascal@16069 | 41 #endif |