📄 nucloada.lst
字号:
973 <1> %endif
974 ; Turn it off again, I was just testing
975 00000548 66E860FDFFFF call dword _a20_func_dis_kbc
976 ; Success
977 0000054E 6667C705[00000000]- mov dword [dword _ena_A20_vec],_a20_func_ena_kbc
978 00000556 [8A020000]
979 0000055A 6667C705[04000000]- mov dword [dword _dis_A20_vec],_a20_func_dis_kbc
980 00000562 [AE020000]
981 00000566 F8 clc
982 00000567 E9BE01 jmp .done
983
984 .kbc_port_EE:
985 safemsg "A20: Using port EE"
986 <1> %if 1
987 0000056A EB15 <1> jmp %%overtext
988 0000056C 0A4132303A20557369- <1> %%msg: db 10,%1,10,0
989 00000575 6E6720706F72742045- <1>
990 0000057E 450A00 <1>
991 <1> %%overtext:
992 00000581 6660 <1> pushad
993 00000583 6606 <1> o32 push es
994 00000585 B800B8 <1> mov ax,0xb800
995 00000588 8EC0 <1> mov es,ax
996 0000058A 66BE[6C050000] <1> mov esi,%%msg
997 00000590 31FF <1> xor di,di
998 <1> %%another:
999 00000592 AC <1> lodsb
1000 00000593 3C00 <1> cmp al,0
1001 00000595 7406 <1> jz %%done
1002 00000597 AA <1> stosb
1003 00000598 B007 <1> mov al,7
1004 0000059A AA <1> stosb
1005 0000059B EBF5 <1> jmp %%another
1006 <1> %%done:
1007 <1>
1008 0000059D B80008 <1> mov ax,0x0800
1009 <1> %%another2:
1010 000005A0 AB <1> stosw
1011 000005A1 81FFA000 <1> cmp di,80*2
1012 000005A5 72F9 <1> jb %%another2
1013 <1>
1014 <1> %if USE_MSG_DELAY
1015 <1> mov ecx,200000000
1016 <1> %else
1017 000005A7 66B901000000 <1> mov ecx,1
1018 <1> %endif
1019 <1>
1020 <1> %%spin:
1021 000005AD 6649 <1> dec ecx
1022 000005AF 75FC <1> jnz %%spin
1023 <1>
1024 000005B1 6607 <1> o32 pop es
1025 000005B3 6661 <1> popad
1026 <1> %endif
1027 ; Turn it off again, I was just testing
1028 000005B5 66E819FDFFFF call dword _a20_func_dis_port_ee
1029 ; Success
1030 000005BB 6667C705[00000000]- mov dword [dword _ena_A20_vec],_a20_func_ena_port_ee
1031 000005C3 [CE020000]
1032 000005C7 6667C705[04000000]- mov dword [dword _dis_A20_vec],_a20_func_dis_port_ee
1033 000005CF [D4020000]
1034 000005D3 F8 clc
1035 000005D4 E95101 jmp .done
1036
1037 .kbc_port_92:
1038 safemsg "A20: Using port 92"
1039 <1> %if 1
1040 000005D7 EB15 <1> jmp %%overtext
1041 000005D9 0A4132303A20557369- <1> %%msg: db 10,%1,10,0
1042 000005E2 6E6720706F72742039- <1>
1043 000005EB 320A00 <1>
1044 <1> %%overtext:
1045 000005EE 6660 <1> pushad
1046 000005F0 6606 <1> o32 push es
1047 000005F2 B800B8 <1> mov ax,0xb800
1048 000005F5 8EC0 <1> mov es,ax
1049 000005F7 66BE[D9050000] <1> mov esi,%%msg
1050 000005FD 31FF <1> xor di,di
1051 <1> %%another:
1052 000005FF AC <1> lodsb
1053 00000600 3C00 <1> cmp al,0
1054 00000602 7406 <1> jz %%done
1055 00000604 AA <1> stosb
1056 00000605 B007 <1> mov al,7
1057 00000607 AA <1> stosb
1058 00000608 EBF5 <1> jmp %%another
1059 <1> %%done:
1060 <1>
1061 0000060A B80008 <1> mov ax,0x0800
1062 <1> %%another2:
1063 0000060D AB <1> stosw
1064 0000060E 81FFA000 <1> cmp di,80*2
1065 00000612 72F9 <1> jb %%another2
1066 <1>
1067 <1> %if USE_MSG_DELAY
1068 <1> mov ecx,200000000
1069 <1> %else
1070 00000614 66B901000000 <1> mov ecx,1
1071 <1> %endif
1072 <1>
1073 <1> %%spin:
1074 0000061A 6649 <1> dec ecx
1075 0000061C 75FC <1> jnz %%spin
1076 <1>
1077 0000061E 6607 <1> o32 pop es
1078 00000620 6661 <1> popad
1079 <1> %endif
1080 ; Turn it off again, I was just testing
1081 00000622 66E8C0FCFFFF call dword _a20_func_dis_port_92
1082 ; Success
1083 00000628 6667C705[00000000]- mov dword [dword _ena_A20_vec],_a20_func_ena_port_92
1084 00000630 [DC020000]
1085 00000634 6667C705[04000000]- mov dword [dword _dis_A20_vec],_a20_func_dis_port_92
1086 0000063C [E8020000]
1087 00000640 F8 clc
1088 00000641 E9E400 jmp .done
1089
1090 .kbc_port_92_kbc:
1091 safemsg "A20: Using port 92 and kbc"
1092 <1> %if 1
1093 00000644 EB1D <1> jmp %%overtext
1094 00000646 0A4132303A20557369- <1> %%msg: db 10,%1,10,0
1095 0000064F 6E6720706F72742039- <1>
1096 00000658 3220616E64206B6263- <1>
1097 00000661 0A00 <1>
1098 <1> %%overtext:
1099 00000663 6660 <1> pushad
1100 00000665 6606 <1> o32 push es
1101 00000667 B800B8 <1> mov ax,0xb800
1102 0000066A 8EC0 <1> mov es,ax
1103 0000066C 66BE[46060000] <1> mov esi,%%msg
1104 00000672 31FF <1> xor di,di
1105 <1> %%another:
1106 00000674 AC <1> lodsb
1107 00000675 3C00 <1> cmp al,0
1108 00000677 7406 <1> jz %%done
1109 00000679 AA <1> stosb
1110 0000067A B007 <1> mov al,7
1111 0000067C AA <1> stosb
1112 0000067D EBF5 <1> jmp %%another
1113 <1> %%done:
1114 <1>
1115 0000067F B80008 <1> mov ax,0x0800
1116 <1> %%another2:
1117 00000682 AB <1> stosw
1118 00000683 81FFA000 <1> cmp di,80*2
1119 00000687 72F9 <1> jb %%another2
1120 <1>
1121 <1> %if USE_MSG_DELAY
1122 <1> mov ecx,200000000
1123 <1> %else
1124 00000689 66B901000000 <1> mov ecx,1
1125 <1> %endif
1126 <1>
1127 <1> %%spin:
1128 0000068F 6649 <1> dec ecx
1129 00000691 75FC <1> jnz %%spin
1130 <1>
1131 00000693 6607 <1> o32 pop es
1132 00000695 6661 <1> popad
1133 <1> %endif
1134 ; Turn it off again, I was just testing
1135 00000697 66E863FCFFFF call dword _a20_func_dis_port_92_kbc
1136 ; Success
1137 0000069D 6667C705[00000000]- mov dword [dword _ena_A20_vec],_a20_func_ena_port_92_kbc
1138 000006A5 [F2020000]
1139 000006A9 6667C705[04000000]- mov dword [dword _dis_A20_vec],_a20_func_dis_port_92_kbc
1140 000006B1 [00030000]
1141 000006B5 F8 clc
1142 000006B6 EB70 jmp .done
1143
1144 .kbc_cmd:
1145 safemsg "A20: Using KBC command"
1146 <1> %if 1
1147 000006B8 EB19 <1> jmp %%overtext
1148 000006BA 0A4132303A20557369- <1> %%msg: db 10,%1,10,0
1149 000006C3 6E67204B424320636F- <1>
1150 000006CC 6D6D616E640A00 <1>
1151 <1> %%overtext:
1152 000006D3 6660 <1> pushad
1153 000006D5 6606 <1> o32 push es
1154 000006D7 B800B8 <1> mov ax,0xb800
1155 000006DA 8EC0 <1> mov es,ax
1156 000006DC 66BE[BA060000] <1> mov esi,%%msg
1157 000006E2 31FF <1> xor di,di
1158 <1> %%another:
1159 000006E4 AC <1> lodsb
1160 000006E5 3C00 <1> cmp al,0
1161 000006E7 7406 <1> jz %%done
1162 000006E9 AA <1> stosb
1163 000006EA B007 <1> mov al,7
1164 000006EC AA <1> stosb
1165 000006ED EBF5 <1> jmp %%another
1166 <1> %%done:
1167 <1>
1168 000006EF B80008 <1> mov ax,0x0800
1169 <1> %%another2:
1170 000006F2 AB <1> stosw
1171 000006F3 81FFA000 <1> cmp di,80*2
1172 000006F7 72F9 <1> jb %%another2
1173 <1>
1174 <1> %if USE_MSG_DELAY
1175 <1> mov ecx,200000000
1176 <1> %else
1177 000006F9 66B901000000 <1> mov ecx,1
1178 <1> %endif
1179 <1>
1180 <1> %%spin:
1181 000006FF 6649 <1> dec ecx
1182 00000701 75FC <1> jnz %%spin
1183 <1>
1184 00000703 6607 <1> o32 pop es
1185 00000705 6661 <1> popad
1186 <1> %endif
1187 ; Turn it off again, I was just testing
1188 00000707 66E81FFCFFFF call dword _a20_func_dis_kbc_cmd
1189 ; Success
1190 0000070D 6667C705[00000000]- mov dword [dword _ena_A20_vec],_a20_func_ena_kbc_cmd
1191 00000715 [0E030000]
1192 00000719 6667C705[04000000]- mov dword [dword _dis_A20_vec],_a20_func_dis_kbc_cmd
1193 00000721 [2C030000]
1194 00000725 F8 clc
1195 00000726 EB00 jmp .done
1196
1197 .done:
1198 00000728 6661 popad
1199 0000072A 660E o32 push cs
1200 0000072C 660FA9 o32 pop gs
1201 0000072F 669D popfd
1202 00000731 66C3 o32 ret
1203
1204 ; The following code is shared above to test for wraparound
1205 ; Returns with ZF set if NO wraparound occurred (the A20 line is enabled)
1206 .test_wraparound:
1207 00000733 66E863FAFFFF call dword _shortdelay
1208
1209 ; Use INT 0x80 vector for scratch area to detect wraparound
1210 00000739 C70600023412 mov word [0x80*4],0x1234
1211 ; Write to wraparound segment
1212 0000073F 65C70610027856 mov word [gs:0x80*4 + 16],0x5678
1213
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -