Changeset 60441 in vbox for trunk/src/VBox/Devices/PC/BIOS
- Timestamp:
- Apr 11, 2016 9:15:40 PM (9 years ago)
- Location:
- trunk/src/VBox/Devices/PC/BIOS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/Makefile.kmk
r60426 r60441 90 90 VBoxPcBios8086_EXTENDS = VBoxPcBios386 91 91 VBoxPcBios8086_CFLAGS = -0 92 VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=80 186 ## @todo get it working as 8086!92 VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=8086 93 93 94 94 -
trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
r60422 r60441 15399 15399 15400 15400 section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO 15401 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 15402 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h15403 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h, 04dh15401 biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30 15402 times 0x2e db 0 15403 db 'XM' 15404 15404 eoi_both_pics: ; 0xfe030 LB 0x4 15405 15405 mov AL, strict byte 020h ; b0 20 … … 15415 15415 loop 0e039h ; e2 f6 15416 15416 retn ; c3 15417 eoi_jmp_post: ; 0xfe044 LB 0x 1715417 eoi_jmp_post: ; 0xfe044 LB 0xb 15418 15418 call 0e030h ; e8 e9 ff 15419 15419 db 033h, 0c0h … … 15421 15421 mov ds, ax ; 8e d8 15422 15422 jmp far [00467h] ; ff 2e 67 04 15423 biosorg_check_before_or_at_0E059h: ; 0xfe04f LB 0xc 15423 15424 times 0xa db 0 15424 15425 db 'XM' … … 15479 15480 je short 0e047h ; 74 85 15480 15481 jmp short 0e0c4h ; eb 00 15481 normal_post: ; 0xfe0c4 LB 0x1f f15482 normal_post: ; 0xfe0c4 LB 0x1f6 15482 15483 mov ax, 07800h ; b8 00 78 15483 15484 db 08bh, 0e0h … … 15680 15681 call 0edbfh ; e8 07 0b 15681 15682 jmp short 0e31bh ; eb 61 15683 biosorg_check_before_or_at_0E2C1h: ; 0xfe2ba LB 0x9 15682 15684 add byte [bx+si], al ; 00 00 15683 15685 add byte [bx+si], al ; 00 00 … … 15695 15697 int 002h ; cd 02 15696 15698 iret ; cf 15697 hard_drive_post: ; 0xfe2d2 LB 0x 12c15699 hard_drive_post: ; 0xfe2d2 LB 0xbd 15698 15700 db 033h, 0c0h 15699 15701 ; xor ax, ax ; 33 c0 … … 15775 15777 sti ; fb 15776 15778 retf 00002h ; ca 02 00 15779 biosorg_check_before_or_at_0E3FCh: ; 0xfe38f LB 0x6f 15777 15780 times 0x6d db 0 15778 15781 db 'XM' … … 15830 15833 int19_handler: ; 0xfe6f2 LB 0x3 15831 15834 jmp near 0f0ach ; e9 b7 09 15832 biosorg_check_ 0E6F5h: ; 0xfe6f5 LB 0x3415835 biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa 15833 15836 or word [bx+si], ax ; 09 00 15834 15837 cld ; fc 15835 15838 add byte [bx+di], al ; 00 01 15836 15839 je short 0e73ch ; 74 40 15837 times 0x2b db 0 15840 times 0x3 db 0 15841 biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a 15842 times 0x28 db 0 15838 15843 db 'XM' 15839 biosorg_check_ 0E729h:; 0xfe729 LB 0x1015844 biosorg_check_at_0E729h: ; 0xfe729 LB 0x10 15840 15845 times 0xe db 0 15841 15846 db 'XM' 15842 biosorg_check_ 0E739h:; 0xfe739 LB 0x1a15847 biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a 15843 15848 push DS ; 1e 15844 15849 push ES ; 06 … … 15883 15888 out strict byte 0a1h, AL ; e6 a1 15884 15889 retn ; c3 15885 ebda_post: ; 0xfe778 LB 0x b615890 ebda_post: ; 0xfe778 LB 0x45 15886 15891 mov ax, 0e746h ; b8 46 e7 15887 15892 mov word [00034h], ax ; a3 34 00 … … 15908 15913 mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f 15909 15914 retn ; c3 15915 biosorg_check_before_or_at_0E82Ch: ; 0xfe7bd LB 0x71 15910 15916 times 0x6f db 0 15911 15917 db 'XM' 15912 biosorg_check_ 0E82Eh:; 0xfe82e LB 0x3615918 biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x36 15913 15919 sti ; fb 15914 15920 push ES ; 06 … … 15971 15977 db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h 15972 15978 db 0ffh, 0ffh, 000h, 004h, 000h, 093h, 000h, 000h 15973 pmode_setup: ; 0xfe8e0 LB 0x a715979 pmode_setup: ; 0xfe8e0 LB 0x5c 15974 15980 push eax ; 66 50 15975 15981 push esi ; 66 56 … … 15998 16004 pop eax ; 66 58 15999 16005 retn ; c3 16006 biosorg_check_before_or_at_0E985h: ; 0xfe93c LB 0x4b 16000 16007 times 0x49 db 0 16001 16008 db 'XM' 16002 biosorg_check_ 0E987h: ; 0xfe987 LB 0x2d216009 biosorg_check_at_0E987h: ; 0xfe987 LB 0x5c 16003 16010 cli ; fa 16004 16011 push ax ; 50 … … 16058 16065 popaw ; 61 16059 16066 iret ; cf 16067 biosorg_check_before_or_at_0EC57h: ; 0xfe9e3 LB 0x276 16060 16068 times 0x274 db 0 16061 16069 db 'XM' 16062 biosorg_check_ 0EC59h:; 0xfec59 LB 0x216070 biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2 16063 16071 jmp short 0ecb0h ; eb 55 16064 16072 int13_relocated: ; 0xfec5b LB 0x55 … … 16267 16275 aad 00ah ; d5 0a 16268 16276 retn ; c3 16269 rtc_post: ; 0xfedbf LB 0x 19816277 rtc_post: ; 0xfedbf LB 0x77 16270 16278 db 066h, 033h, 0c0h 16271 16279 ; xor eax, eax ; 66 33 c0 … … 16315 16323 mov byte [00470h], AL ; a2 70 04 16316 16324 retn ; c3 16325 biosorg_check_before_or_at_0EF55h: ; 0xfee36 LB 0x121 16317 16326 times 0x11f db 0 16318 16327 db 'XM' 16319 int0e_handler: ; 0xfef57 LB 0x 7016328 int0e_handler: ; 0xfef57 LB 0x3b 16320 16329 push ax ; 50 16321 16330 push dx ; 52 … … 16350 16359 pop ax ; 58 16351 16360 iret ; cf 16361 biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35 16352 16362 times 0x33 db 0 16353 16363 db 'XM' … … 16361 16371 db 0f6h 16362 16372 invd ; 0f 08 16363 biosorg_check_ 0EFD2h:; 0xfefd2 LB 0x216373 biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2 16364 16374 jmp short 0efd4h ; eb 00 16365 16375 int17_handler: ; 0xfefd4 LB 0xd … … 16379 16389 _rmode_IDT: ; 0xfefe7 LB 0x6 16380 16390 db 0ffh, 003h, 000h, 000h, 000h, 000h 16381 int1c_handler: ; 0xfefed LB 0x 5816391 int1c_handler: ; 0xfefed LB 0x1 16382 16392 iret ; cf 16393 biosorg_check_before_or_at_0F043h: ; 0xfefee LB 0x57 16383 16394 times 0x55 db 0 16384 16395 db 'XM' 16385 biosorg_check_ 0F045h: ; 0xff045 LB 0x2016396 biosorg_check_at_0F045h: ; 0xff045 LB 0x1 16386 16397 iret ; cf 16398 biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f 16387 16399 times 0x1d db 0 16388 16400 db 'XM' 16389 int10_handler: ; 0xff065 LB 0x 3f16401 int10_handler: ; 0xff065 LB 0x1 16390 16402 iret ; cf 16403 biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e 16391 16404 times 0x3c db 0 16392 16405 db 'XM' 16393 biosorg_check_ 0F0A4h:; 0xff0a4 LB 0x816406 biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8 16394 16407 push CS ; 0e 16395 16408 pop DS ; 1f … … 16692 16705 db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h 16693 16706 db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h 16694 _pci_routing_table_size: ; 0xff4a0 LB 0x 3a116707 _pci_routing_table_size: ; 0xff4a0 LB 0x2 16695 16708 loopne 0f4a3h ; e0 01 16709 biosorg_check_before_or_at_0F83Fh: ; 0xff4a2 LB 0x39f 16696 16710 times 0x39d db 0 16697 16711 db 'XM' … … 16788 16802 popaw ; 61 16789 16803 iret ; cf 16790 int76_handler: ; 0xff8d7 LB 0x1 9716804 int76_handler: ; 0xff8d7 LB 0x12 16791 16805 push ax ; 50 16792 16806 push DS ; 1e … … 16798 16812 pop ax ; 58 16799 16813 iret ; cf 16814 biosorg_check_before_or_at_0FA6Ch: ; 0xff8e9 LB 0x185 16800 16815 times 0x183 db 0 16801 16816 db 'XM' … … 16865 16880 db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h 16866 16881 db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h 16867 biosorg_check_ 0FE6Eh:; 0xffe6e LB 0x2116882 biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0x21 16868 16883 cmp ah, 0b1h ; 80 fc b1 16869 16884 jne short 0fe82h ; 75 0f … … 16890 16905 pop ES ; 07 16891 16906 iret ; cf 16892 int70_handler: ; 0xffe8f LB 0x 1616907 int70_handler: ; 0xffe8f LB 0xd 16893 16908 push ES ; 06 16894 16909 push DS ; 1e … … 16902 16917 pop ES ; 07 16903 16918 iret ; cf 16919 biosorg_check_before_or_at_0FEA3h: ; 0xffe9c LB 0x9 16904 16920 add byte [bx+si], al ; 00 00 16905 16921 add byte [bx+si], al ; 00 00 16906 16922 add byte [bx+si], al ; 00 00 16907 16923 add byte [bx+si+04dh], bl ; 00 58 4d 16908 int08_handler: ; 0xffea5 LB 0x4 e16924 int08_handler: ; 0xffea5 LB 0x43 16909 16925 sti ; fb 16910 16926 push eax ; 66 50 … … 16940 16956 pop eax ; 66 58 16941 16957 iret ; cf 16958 biosorg_check_before_or_at_0FEF1h: ; 0xffee8 LB 0xb 16942 16959 times 0x9 db 0 16943 16960 db 'XM' 16944 biosorg_check_ 0FEF3h:; 0xffef3 LB 0xd16961 biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd 16945 16962 times 0xb db 0 16946 16963 db 'XM' 16947 biosorg_check_ 0FF00h: ; 0xfff00 LB 0x5316964 biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19 16948 16965 dec di ; 4f 16949 16966 jc short 0ff64h ; 72 61 … … 16961 16978 dec di ; 4f 16962 16979 push bx ; 53 16980 biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a 16963 16981 times 0x38 db 0 16964 16982 db 'XM' 16965 16983 dummy_iret: ; 0xfff53 LB 0x1 16966 16984 iret ; cf 16967 biosorg_check_ 0FF54h: ; 0xfff54 LB 0x9c16985 biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c 16968 16986 iret ; cf 16969 16987 mov ax, ax ; 89 c0 … … 16993 17011 add byte [bx+si], al ; 00 00 16994 17012 add byte [di], ah ; 00 25 16995 times 0x6f db 0 17013 times 0x1 db 0 17014 biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 17015 times 0x6e db 0 16996 17016 db 'XM' 16997 17017 cpu_reset: ; 0xffff0 LB 0x10 -
trunk/src/VBox/Devices/PC/BIOS/orgs.asm
r60434 r60441 161 161 public int13_handler 162 162 public int13_relocated 163 if VBOX_BIOS_CPU eq 8086 164 public jmp_call_ret_int13_out 165 endif 163 166 public int15_handler 164 167 public int17_handler … … 171 174 public normal_post 172 175 public eoi_jmp_post 176 public no_eoi_jmp_post 173 177 public eoi_master_pic 174 178 public ebda_post 179 public seg_40_value 175 180 public hard_drive_post 176 181 public int13_legacy … … 239 244 jmp dword ptr ds:[0467h] 240 245 246 seg_40_value: dw 40h ;; Replaces a push 40; pop ds. 247 241 248 ;; -------------------------------------------------------- 242 249 ;; POST entry point … … 254 261 jz in_real_mode 255 262 SET_DEFAULT_CPU_286 263 else 264 jmp in_real_mode 256 265 endif 257 266 … … 288 297 ;; faulting the CPU or similar. Check reboot flag. 289 298 ;; NB: At this point, registers need not be preserved. 290 push 40h 291 pop ds 299 mov ds, cs:[seg_40_value] 292 300 cmp word ptr ds:[72h], 1234h 293 301 jnz reset_sys ; trigger system reset … … 500 508 mov dx, 278h ; parallel port 2 501 509 call detect_parport 502 shl bx, 0Eh510 DO_shl bx, 0Eh 503 511 mov ax, ds:[410h] ; equipment word 504 512 and ax, 3FFFh … … 520 528 mov dx, 2E8h ; fourth serial address 521 529 call detect_serial 522 shl bx, 9530 DO_shl bx, 9 523 531 mov ax, ds:[410h] ; equipment word 524 532 and ax, 0F1FFh ; bits 9-11 determine serial ports … … 760 768 push ds 761 769 push es 762 DO_ PUSHA770 DO_pusha 763 771 C_SETUP 764 772 call _int14_function 765 DO_ POPA773 DO_popa 766 774 pop es 767 775 pop ds … … 776 784 push ds 777 785 push es 778 DO_ PUSHA786 DO_pusha 779 787 C_SETUP 780 788 call _dummy_isr_function 781 DO_ POPA789 DO_popa 782 790 pop es 783 791 pop ds … … 837 845 push es 838 846 push ds 839 DO_ PUSHA847 DO_pusha 840 848 841 849 cmp ah, 0 … … 847 855 C_SETUP 848 856 call _int16_function 849 DO_ POPA857 DO_popa 850 858 pop ds 851 859 pop es … … 874 882 C_SETUP 875 883 call _int16_function 876 DO_ POPA884 DO_popa 877 885 pop ds 878 886 pop es … … 919 927 in al, KBC_DATA 920 928 push ds 921 DO_ PUSHA929 DO_pusha 922 930 cld ; Before INT 15h (and any C code) 923 931 ifdef BX_CALL_INT15_4F … … 952 960 953 961 int09_done: 954 DO_ POPA962 DO_popa 955 963 pop ds 956 964 cli … … 969 977 970 978 int06_handler: 971 DO_ PUSHA979 DO_pusha 972 980 push es 973 981 push ds … … 976 984 pop ds 977 985 pop es 978 DO_ POPA986 DO_popa 979 987 iret 980 988 … … 999 1007 ja int13_not_eltorito 1000 1008 1001 DO_ PUSHA1009 DO_pusha 1002 1010 push es 1003 1011 push ds 1004 1012 C_SETUP ; TODO: setup C envrionment only once? 1005 push int13_out ; simulate a call 1006 jmp _int13_eltorito ; ELDX not used 1013 DO_JMP_CALL_EX _int13_eltorito, int13_out, jmp_call_ret_int13_out ; ELDX not used 1014 if VBOX_BIOS_CPU eq 8086 1015 jmp_call_ret_int13_out: dw offset int13_out 1016 endif 1007 1017 1008 1018 int13_not_eltorito: … … 1031 1041 pop es 1032 1042 1033 DO_ PUSHA1043 DO_pusha 1034 1044 push es 1035 1045 push ds 1036 1046 C_SETUP ; TODO: setup environment only once? 1037 1047 1038 push int13_out ; simulate a call 1039 jmp _int13_cdemu ; ELDX not used 1048 DO_JMP_CALL_EX _int13_cdemu, int13_out, jmp_call_ret_int13_out ; ELDX not used 1040 1049 1041 1050 int13_nocdemu: … … 1080 1089 1081 1090 ;; now the registers can be restored with 1082 ;; pop ds; pop es; DO_ POPA; iret1091 ;; pop ds; pop es; DO_popa; iret 1083 1092 test dl, 80h ; non-removable? 1084 1093 jnz int13_notfloppy 1085 1094 1086 push int13_out ; simulate a near call 1087 jmp _int13_diskette_function 1095 DO_JMP_CALL_EX _int13_diskette_function, int13_out, jmp_call_ret_int13_out 1088 1096 1089 1097 int13_notfloppy: … … 1116 1124 pop ds 1117 1125 pop es 1118 DO_ POPA1126 DO_popa 1119 1127 iret 1120 1128 … … 1214 1222 look_drive0: 1215 1223 ; TODO: pre-init bl to reduce jumps 1216 shr al, 4 ; drive 0 in high nibble1224 DO_shr al, 4 ; drive 0 in high nibble 1217 1225 jz f0_missing ; jump if no drive 1218 1226 mov bl, 7 ; drv0 determined, multi-rate, chgline … … 1255 1263 ;; in : AL in packed BCD format 1256 1264 ;; out: AL in binary, AH always 0 1265 if VBOX_BIOS_CPU ge 80186 1257 1266 shl ax, 4 1258 1267 shr al, 4 1268 else 1269 push cx 1270 mov cl, 4 1271 shl ax, cl 1272 shr al, cl 1273 pop cx 1274 endif 1259 1275 aad 1260 1276 ret … … 1437 1453 push ds 1438 1454 push es 1439 DO_ PUSHA1455 DO_pusha 1440 1456 C_SETUP 1441 1457 call _int17_function 1442 DO_ POPA1458 DO_popa 1443 1459 pop es 1444 1460 pop ds … … 1564 1580 ; 3rd boot device 1565 1581 mov ax, 3 1566 push 31582 push ax 1567 1583 call _int19_function 1568 1584 inc sp … … 1585 1601 if VBOX_BIOS_CPU lt 80386 1586 1602 mov [bp], ax 1587 shl ax, 41603 DO_shl ax, 4 1588 1604 mov [bp+2], ax ; set ip 1589 1605 mov ax, [bp] … … 1658 1674 cmp ah, 0d0h 1659 1675 je int15_handler32 1660 DO_ PUSHA1676 DO_pusha 1661 1677 cmp ah, 53h ; APM function? 1662 1678 je apm_call … … 1666 1682 call _int15_function 1667 1683 int15_handler_popa_ret: 1668 DO_ POPA1684 DO_popa 1669 1685 int15_handler32_ret: 1670 1686 pop es … … 1690 1706 .286 1691 1707 else 1692 DO_ PUSHA1708 DO_pusha 1693 1709 call _int15_function32 1694 DO_ POPA1710 DO_popa 1695 1711 endif 1696 1712 jmp int15_handler32_ret … … 1719 1735 1720 1736 sti 1721 DO_ PUSHA1737 DO_pusha 1722 1738 push es 1723 1739 push ds 1724 push 0 ; placeholder for status 1725 push 0 ; placeholder for X 1726 push 0 ; placeholder for Y 1727 push 0 ; placeholder for Z 1728 push 0 ; placeholder for make_far_call bool 1740 xor ax, ax 1741 push ax ; placeholder for status 1742 push ax ; placeholder for X 1743 push ax ; placeholder for Y 1744 push ax ; placeholder for Z 1745 push ax ; placeholder for make_far_call bool 1729 1746 C_SETUP 1730 1747 call _int74_function … … 1733 1750 1734 1751 ;; make far call to EBDA:0022 1752 if VBOX_BIOS_CPU ge 80186 1735 1753 push 0 1754 else 1755 xor ax, ax 1756 push ax 1757 endif 1736 1758 pop ds 1737 1759 push ds:[40Eh] … … 1744 1766 pop ds 1745 1767 pop es 1746 DO_ POPA1768 DO_popa 1747 1769 iret 1748 1770 … … 1763 1785 1764 1786 int76_handler endp 1787 1788 1789 ;; 1790 ;; IRQ 8 handler (RTC) 1791 ;; 1792 int70_handler: 1793 push es 1794 push ds 1795 DO_pusha 1796 C_SETUP 1797 call _int70_function 1798 DO_popa 1799 pop ds 1800 pop es 1801 iret 1802 1803 1804 1805 if VBOX_BIOS_CPU lt 80386 1806 ; 1807 ; We're tight on space down below in the int08_handler, so put 1808 ; the 16-bit rollover code here. 1809 ; 1810 int08_maybe_rollover: 1811 ja int08_rollover 1812 cmp ax, 00B0h 1813 jb int08_rollover_store 1814 ;; there has been a midnight rollover 1815 int08_rollover: 1816 xor dx, dx 1817 xor ax, ax 1818 1819 inc byte ptr ds:[70h] ; increment rollover flag 1820 int08_rollover_store: 1821 jmp int08_store_ticks 1822 endif 1823 1765 1824 1766 1825 ;; -------------------------------------------------------- … … 1796 1855 push es 1797 1856 push ds 1798 DO_ PUSHA1857 DO_pusha 1799 1858 C_SETUP 1800 1859 int1a_callfunction: 1801 1860 call _int1a_function 1802 DO_ POPA1861 DO_popa 1803 1862 pop ds 1804 1863 pop es 1805 1864 iret 1806 1865 1807 1808 ;;1809 ;; IRQ 8 handler (RTC)1810 ;;1811 int70_handler:1812 push es1813 push ds1814 DO_PUSHA1815 C_SETUP1816 call _int70_function1817 DO_POPA1818 pop ds1819 pop es1820 iret1821 1822 if VBOX_BIOS_CPU lt 803861823 ;1824 ; We're tight on space down below in the int08_handler, so put1825 ; the 16-bit rollover code here.1826 ;1827 int08_maybe_rollover:1828 ja int08_rollover1829 cmp ax, 00B0h1830 jb int08_store_ticks1831 ;; there has been a midnight rollover1832 int08_rollover:1833 xor dx, dx1834 xor ax, ax1835 1836 inc byte ptr ds:[70h] ; increment rollover flag1837 jmp int08_store_ticks1838 endif1839 1866 1840 1867 ;; -------------------------------------------------------- … … 1874 1901 else 1875 1902 cmp dx, 18h 1876 jae int08_maybe_rollover 1903 jb int08_store_ticks 1904 jmp int08_maybe_rollover 1877 1905 endif 1878 1906
Note:
See TracChangeset
for help on using the changeset viewer.