29:
1361:
interrupt handlers internally. For example: 1234h:0000h 1233h:0010h 1232h:0020h 1231h:0030h 1230h:0040h all point to exactly the same entry point. If you hook INT 21h onto 1234h:0000h and INT 2Fh onto 1233h:0010h, and so on, they would all go through the same "loophole", but you would still be able to distinguish between them and branch into the different handlers internally. Think of a "compressed" entry point into a
888:
unload some of them, however, it is only used to a very limited extent (for example you can see some of the info reflected in the log files created on
Windows 9x startup, and some parts of the Windows configuration manager also make use of it), leaving room for speculation much beyond the technical side - in particular because nothing of the interesting stuff is documented…
1085:
190:. If the driver does not exhibit any public data structures and only uses interrupts or calls already controlled by the underlying operating system, it might be possible to register the driver with the system in a way so that the system will take care of A20 itself thereby eliminating the need for a separate stub.
1360:
many years ago Axel and I were thinking about a way how to use *one* entry point into a driver for multiple interrupt vectors (as this would save us a lot of space for the multiple entry points and the more or less identical startup/exit framing code in all of them), and then switch to the different
1284:
contained a far call opcode (9Ah); the word at offset 6 of the PSP contained the appropriate value to indicate program segment size, and also the offset part of the far call. The word at offset 8, which served as the segment part of the far call, was crafted such that when combined with the offset,
887:
line of invocation, etc.) and stores this information in an complicated and growing data structure. Presumably this info is meant to be used by the
Windows core to get a better picture of the loaded Real Mode drivers instead of treating DOS as a monolithic block, or even attempt to unhook or
647:
support, task swapping, and
Undelete. Considerable amounts of the team's management attention was diverted to new features such as file transfer software, undelete and network installation Eventually this situation reached a crisis point at the end of July 1990, and, led by
548:(NB. Gives a comprehensive overview on the history and "nature" of the HMA and the non-obvious design constraints to be observed when developing resident system extensions to be loaded into the HMA. It also describes how to address these issues using
883:+, since this issue introduced a new and for the most part undocumented RMD data structure usually located in the HMA. The kernel collects and records configuration and Real Mode Driver data during boot (type of driver, interrupts hooked by driver,
1373:), which consumes much more memory if you hook many interrupts. We came to the result that this would most probably not be save in practise because you never know if other drivers normalize or denormalize pointers, for what reasons ever.
81:
and subsequent processors identifies memory locations with a 16-bit segment and a 16-bit offset, which is resolved into a physical address via (segment) Ă— 16 + (offset). Although intended to address only
1297:
disabled. How does that work then? Rather than chopping off address bits, the system mirrors the five bytes at 0:C0h at 1000C0h. The same technique had been in fact used in DOS 5 and above running with
743:
171:(using only relative references), be compiled to work at the specific addresses in the HMA (typically allowing only one or at most two pieces of code to share the HMA), or it must be designed to be
1233:
1365:
stub for HMA loading. This works as long as no program starts doing segment:offset magics. Contrast this with the opposite approach to have multiple entry points (maybe even supporting
182:
Before code (or data) in the HMA can be addressed by the CPU, the corresponding driver must ensure that the HMA is mapped in. This requires that any such requests are tunneled through a
98:
and subsequent processors, this mode can actually address the first 65520 bytes of extended memory as part of the 64 KB range starting 16 bytes before the 1 MB mark—
994:
1003:
1001:
855:) into the HMA, there is usually still free space available, typically around 10 Kb (up to ca. 20 Kb when you use a 3rd party shell). It also makes sense for
1195:
748:
746:
536:
475:
and higher, because they only hook the multiplex interrupt INT 2Fh and can therefore utilize a backdoor interface to hook into the interrupt chain in
385:(2000), parts of the HMA are also used as a scratchpad to hold a growing data structure recording various properties of the loaded real-mode drivers.
935:
collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the file.)
164:
could control the addressing mode dynamically, thereby allowing programs to load themselves into the 1024–1088 KB region and run in real mode.
1257:
714:
Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and
Windows 3.1
624:
330:
could utilize the HMA as well. Under MS-DOS/PC DOS, a ca. 2 KB shared portion of COMMAND.COM can be relocated into the HMA, as well as
680:
1041:
331:
1344:
1217:
1023:
907:
804:
996:
1154:
999:
1218:"Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted"
1118:
978:
769:
737:
652:, the team's management spent an arduous series of meetings nailing down a schedule and process for closing the project down
1312:
871:, which typically leave 4 - 7 Kb of the HMA memory unused (SHARE, KEYB, and NLSFUNC cannot load into the HMA, but
582:
1081:
936:
251:
302:
option), thereby freeing up even more conventional memory and upper memory for conventional DOS software to work with.
274:
1293:
interface works even in DOS emulation under
Windows NT and OS/2, and those systems most certainly cannot run with the
1183:
949:
NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte
Details, Bugs und Workarounds
903:
NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte
Details, Bugs und Workarounds
988:
970:
727:
719:
823:
61 INT 21h/AH=52h has some info on the MS-DOS 7.0+ HMA MCB chain HMA relocation for TSRs makes much sense for
1071:
432:
268:
556:
drivers capable of relocating into the HMA and similar to a (more sophisticated) method used as the basis for the
427:
154:
1393:
1388:
1370:
931:, including the description of many undocumented features and internals. It is part of the author's yet larger
836:
527:[Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA)] (in German).
172:
557:
438:
422:
186:
remaining in memory outside the HMA, which would invoke the A20 handler in order to (temporarily) enable the
619:. p. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Depo. Ex. 1109.
524:
226:
444:
1300:
1249:
609:
237:
666:
168:
718:. The Andrew Schulman Programming Series (1st printing, 2nd ed.). Reading, Massachusetts, USA:
441:
to specify the HMA segment (PTS-DOS only), similar to the DR DOS HIDOS.SYS /BDOS=xxxx parameter
1336:
1015:
796:
71:
901:
1281:
1305:. In that case, DOS makes sure that linear address 1000C0h contains the appropriate far call.
1057:
848:
578:
Making Code Work Better - How to minimize the size of 80x86 code and sometimes make it faster
525:"Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA)"
468:
291:
37:
373:
loads into the HMA (if available), and SHARE can be loaded into the HMA as well (unless its
900:
Paul, Matthias R. (1997-07-30) . "II.4. Undokumentierte
Eigenschaften externer Kommandos".
49:
947:
Paul, Matthias R. (2001-04-09). "II.4. Undokumentierte
Eigenschaften externer Kommandos".
8:
840:
464:
295:
247:
153:, from the rest of the motherboard. This gate could be controlled, initially through the
1191:
435:
SIZE=xxxx parameter to override default HMA pre-allocation (DR-DOS 7.02 and higher only)
1221:
1150:
844:
712:
644:
639:
One of the most important stimulanta for adding features was competitive pressure from
287:
176:
1184:"Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS ĂĽberschrieben wird"
1170:(Windows 9x only) because there apparently is not enough unused HMA memory available.
643:, which we first learnt of in the spring of 1990. The DRDOS feature set led us to add
1077:
1067:
984:
974:
733:
723:
620:
255:
1187:
1110:
528:
323:
206:
759:
1320:
649:
576:
549:
406:
400:
283:
262:, the system additionally attempted to move the disk buffers into the HMA. Under
183:
710:; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) . Williams, Andrew (ed.).
1063:
319:
311:
532:
129:
To allow running existing DOS programs which relied on this feature to access
1382:
965:
Chappell, Geoff (January 1994). Schulman, Andrew; Pedersen, Amorette (eds.).
707:
246:
and kernel could be loaded into the HMA as well, freeing up to 46 KB of
1290:
1289:
CPU) and point to address 0:C0h, which contains interrupt vector 30h. the
928:
924:
476:
347:
343:
327:
315:
115:
1357:
1137:
Move code to HMA if available and added /NOHMA option force loading low.
1033:
868:
860:
480:
412:
366:
279:
198:
161:
142:
95:
20:
1130:
1037:
969:. The Andrew Schulman Programming Series (1st printing, 1st ed.).
884:
880:
856:
832:
828:
816:
671:
640:
472:
394:
382:
378:
362:
339:
263:
232:
222:
216:
210:
146:
130:
111:
107:
78:
575:
Ingenoso, Tony (1998-12-20). "Chapter 13 - The A20 gate and the HMA".
28:
1134:
616:
202:
194:
138:
67:
623:
Plaintiff's
Exhibit 3473. CA.No.2:96CV645B Plaintiff's Exhibit 477.
1362:
1294:
1167:
1029:
872:
552:, backdoors, and intra-segment offset relocation, a method used by
417:
355:
351:
335:
243:
187:
167:
Code suitable to be executed in the HMA must either be coded to be
157:, to allow running programs which wanted to access the entire RAM.
150:
83:
879:
can to some extent). Available HMA space can be rather tight with
149:
which could disconnect the microprocessor's 21st addressing line,
852:
303:
701:
699:
697:
1277:
1273:
1269:
864:
824:
676:
553:
370:
307:
60:
760:"Format of HMA Memory Block (DR DOS 6.0 kernel loaded in HMA)"
306:
seems to have relocated parts of itself into the HMA as well.
1111:"This is a detailed list of the changes I made in PC DOS 7.0"
876:
694:
134:
75:
258:(UMA), but not into the HMA. Under DOS 5.0 and higher, with
1286:
820:
764:
463:
A stub is not necessary for the resident system extensions
145:
to simulate the wrapping around. This circuit was a simple
114:
processors, with only 1 MB of memory and only 20
53:
960:
958:
1366:
705:
57:
819:+ adds INT 21h/AX=4A03h and INT 21h/AX=4A04h.
1285:
it would wrap around (a well understood feature of the
955:
1337:"Re: [fd-dev] ANNOUNCE: CuteMouse 2.0 alpha 1"
86:(MB) (2 bytes) of memory, segment:offset addresses at
1044:
seem to have had a facility to store them in the HMA
1280:, used a clever trick. The byte at offset 5 of the
1036:, for example) store the currently unused fonts in
603:
601:
599:
1166:ANSIPLUS's code cannot be loaded to the HMA under
1104:
1102:
1049:
940:
790:
788:
786:
711:
118:, wrapped around at the 20th bit, so that address
1007:
893:
179:(with all addresses being fixed up during load).
1380:
596:
1209:
1099:
783:
570:
568:
566:
518:
516:
514:
512:
510:
508:
506:
504:
502:
500:
250:. Other components, such as device drivers and
1175:
675:(Technical information document). Revision A.
664:
658:
342:(1993) and higher, a ca. 5 KB portion of
90:and beyond reference memory beyond 1 MB (
298:could load into the HMA as well (using their
752:
563:
497:
16:RAM area of an IBM AT or compatible computer
1250:"Who needs the address wraparound, anyway?"
1142:
827:: Although you can load large parts of the
610:"MS-DOS 5.0 Development Post-Mortem Report"
483:will provide the functionality of the stub.
457:
254:(TSRs), could at least be loaded into the
851:(and in some issues parts of TASKMGR and
266:(1991) and higher, the disk buffers (via
1310:
964:
574:
350:can coexist with DOS in the HMA (unless
201: 2.1 in 1988, which introduced the
27:
1247:
1040:. Some earlier issues of MS-DOS/PC DOS
665:Banta, K.; Partridge, D. (1994-08-18).
607:
1381:
1148:
1108:
1055:
835:, the resident part of the shell, the
797:"[fd-dev] HMA access from TSR"
906:. MPDOSTIP (in German) (3 ed.).
205:device driver. Starting in 1990 with
1334:
1311:Kozierok, Charles M. (2001-04-17) .
1215:
1181:
1013:
973:. pp. 4, 21, 100–106, 127–129.
951:. MPDOSTIP (in German) (3 ed.).
946:
899:
794:
522:
252:terminate-and-stay-resident programs
32:The high memory area is highlighted.
679:. TID800074 (replaces FYI-M-1303).
242:), parts of the operating system's
52:area consisting of the first 65520
13:
1241:
608:Dryfoos, Mike, ed. (1991-09-18) .
278:), parts of the command processor
14:
1405:
1216:Paul, Matthias R. (1997-10-02) .
1026:from the original on 2021-12-08.
971:Addison Wesley Publishing Company
742:(xviii+856+vi pages, 3.5"-floppy
722:. pp. 42, 349–350, 437–438.
720:Addison Wesley Publishing Company
560:in the author's FreeKEYB driver.)
1335:Paul, Matthias R. (2002-04-11).
1182:Paul, Matthias R. (2002-08-13).
1133:Move code to HMA if available.
1014:Paul, Matthias R. (2002-12-04).
993:(xxvi+738+iv pages, 3.5"-floppy
795:Paul, Matthias R. (2002-04-10).
523:Paul, Matthias R. (2002-02-02).
433:SHELLHIGH (CONFIG.SYS directive)
397:(the first 64 KB of memory)
193:The first user of the HMA among
1347:from the original on 2020-02-21
1260:from the original on 2020-02-19
1198:from the original on 2017-09-04
1157:from the original on 2021-11-28
1121:from the original on 2020-02-18
1088:from the original on 2020-02-18
1028:some issues of DISPLAY.SYS (of
1016:"[fd-dev] DISPLAY CON?"
910:from the original on 2016-11-05
807:from the original on 2017-09-09
772:from the original on 2020-02-18
683:from the original on 2021-12-15
630:from the original on 2019-04-02
585:from the original on 2019-11-18
539:from the original on 2017-09-09
428:Intra-segment offset relocation
1248:Necasek, Michal (2011-09-13).
1:
667:"Third Party Memory Managers"
558:dynamic dead code elimination
490:
439:HMAREA (CONFIG.SYS directive)
423:Paragraph boundary relocation
137:computers, IBM added special
56:above the one megabyte in an
7:
1149:Sweger, Kristofer (2007) .
923:is a comprehensive work on
445:Incomplete address decoding
388:
282:as well as several special
10:
1410:
1371:Interrupt Sharing Protocol
1192:de.comp.lang.assembler.x86
1109:Brooks, Vernon C. (2014).
615:(mail as court document).
479:so that the kernel's gate
18:
72:segmentation architecture
1313:"High Memory Area (HMA)"
1062:(special 3rd ed.).
450:
377:option is given). Under
63:or compatible computer.
19:Not to be confused with
1319:. 2.2.0. Archived from
839:, and DR-DOS TSRs like
1151:"ANSIPLUS and Windows"
318:and early versions of
231:) and since 1991 with
33:
1394:DOS memory management
1389:X86 memory management
334:bitmaps for prepared
92:FFFF0 + 0010 = 100000
38:DOS memory management
31:
1056:Cooper, Jim (2002).
169:position-independent
104:FFFF:FFFF (0x10FFEF)
361:is invoked). Under
248:conventional memory
155:keyboard controller
133:on their newer IBM
100:FFFF:0000 (0xFFFF0)
706:Schulman, Andrew;
177:offset relocatable
173:paragraph boundary
122:was equivalent to
34:
1059:Using MS-DOS 6.22
980:978-0-201-60835-9
738:978-0-201-63287-3
621:Comes v Microsoft
272:, and later also
256:upper memory area
1401:
1375:
1358:mangled pointers
1356:in case of such
1353:
1352:
1331:
1329:
1328:
1307:
1266:
1265:
1235:
1232:
1230:
1229:
1220:. Archived from
1213:
1207:
1206:
1204:
1203:
1179:
1173:
1172:
1163:
1162:
1146:
1140:
1139:
1127:
1126:
1106:
1097:
1096:
1094:
1093:
1082:978-0-78972573-8
1053:
1047:
1046:
1011:
1005:
992:
962:
953:
952:
944:
938:
934:
922:
918:
916:
915:
897:
891:
890:
813:
812:
792:
781:
780:
778:
777:
756:
750:
741:
717:
703:
692:
691:
689:
688:
662:
656:
654:
636:
635:
629:
614:
605:
594:
593:
591:
590:
572:
561:
547:
545:
544:
533:de.comp.os.msdos
520:
484:
461:
324:Personal NetWare
207:Digital Research
125:
121:
105:
101:
93:
89:
42:high memory area
1409:
1408:
1404:
1403:
1402:
1400:
1399:
1398:
1379:
1378:
1350:
1348:
1326:
1324:
1304:
1263:
1261:
1244:
1242:Further reading
1239:
1238:
1227:
1225:
1214:
1210:
1201:
1199:
1180:
1176:
1160:
1158:
1147:
1143:
1124:
1122:
1107:
1100:
1091:
1089:
1074:
1066:. p. 669.
1054:
1050:
1012:
1008:
981:
963:
956:
945:
941:
932:
920:
913:
911:
898:
894:
810:
808:
793:
784:
775:
773:
758:
757:
753:
730:
704:
695:
686:
684:
663:
659:
633:
631:
627:
612:
606:
597:
588:
586:
573:
564:
542:
540:
521:
498:
493:
488:
487:
462:
458:
453:
407:Expanded memory
401:Extended memory
391:
376:
363:PC DOS 7.0
360:
301:
284:self-relocating
277:
271:
264:DR DOS 6.0
261:
241:
230:
220:
211:DR DOS 5.0
123:
119:
103:
99:
91:
87:
24:
17:
12:
11:
5:
1407:
1397:
1396:
1391:
1377:
1376:
1332:
1308:
1299:
1243:
1240:
1237:
1236:
1208:
1174:
1141:
1098:
1072:
1064:Que Publishing
1048:
1006:
979:
954:
939:
892:
782:
751:
728:
708:Brown, Ralf D.
693:
657:
595:
562:
495:
494:
492:
489:
486:
485:
455:
454:
452:
449:
448:
447:
442:
436:
430:
425:
420:
415:
410:
404:
398:
390:
387:
374:
358:
299:
273:
267:
259:
236:
225:
214:
15:
9:
6:
4:
3:
2:
1406:
1395:
1392:
1390:
1387:
1386:
1384:
1374:
1372:
1368:
1364:
1359:
1346:
1342:
1338:
1333:
1323:on 2006-10-16
1322:
1318:
1314:
1309:
1306:
1302:
1296:
1292:
1288:
1283:
1279:
1275:
1271:
1259:
1255:
1251:
1246:
1245:
1234:
1224:on 2003-10-04
1223:
1219:
1212:
1197:
1193:
1189:
1186:(in German).
1185:
1178:
1171:
1169:
1156:
1152:
1145:
1138:
1136:
1132:
1120:
1116:
1112:
1105:
1103:
1087:
1083:
1079:
1075:
1069:
1065:
1061:
1060:
1052:
1045:
1043:
1039:
1035:
1031:
1025:
1021:
1017:
1010:
1004:
1002:
1000:
997:
995:
990:
989:0-201-60835-9
986:
982:
976:
972:
968:
967:DOS Internals
961:
959:
950:
943:
937:
930:
926:
909:
905:
904:
896:
889:
886:
882:
878:
874:
870:
866:
862:
858:
854:
850:
846:
842:
838:
834:
830:
826:
822:
818:
806:
802:
798:
791:
789:
787:
771:
767:
766:
761:
755:
749:
747:
744:
739:
735:
731:
729:0-201-63287-X
725:
721:
716:
715:
709:
702:
700:
698:
682:
678:
674:
673:
668:
661:
653:
651:
646:
642:
626:
622:
618:
611:
604:
602:
600:
584:
580:
579:
571:
569:
567:
559:
555:
551:
538:
534:
530:
526:
519:
517:
515:
513:
511:
509:
507:
505:
503:
501:
496:
482:
478:
474:
470:
466:
460:
456:
446:
443:
440:
437:
434:
431:
429:
426:
424:
421:
419:
416:
414:
411:
408:
405:
402:
399:
396:
393:
392:
386:
384:
380:
372:
368:
364:
357:
353:
349:
345:
341:
337:
333:
329:
325:
321:
317:
313:
309:
305:
297:
293:
289:
286:drivers like
285:
281:
276:
270:
265:
257:
253:
249:
245:
239:
234:
228:
224:
218:
212:
208:
204:
200:
197:products was
196:
191:
189:
185:
180:
178:
174:
170:
165:
163:
158:
156:
152:
148:
144:
140:
136:
132:
127:
117:
116:address lines
113:
109:
97:
94:). So, on an
85:
80:
77:
73:
69:
64:
62:
59:
55:
51:
47:
43:
39:
30:
26:
22:
1355:
1349:. Retrieved
1340:
1325:. Retrieved
1321:the original
1317:The PC Guide
1316:
1272:, and hence
1268:
1262:. Retrieved
1253:
1226:. Retrieved
1222:the original
1211:
1200:. Retrieved
1177:
1165:
1159:. Retrieved
1144:
1129:
1123:. Retrieved
1115:PC DOS Retro
1114:
1090:. Retrieved
1073:0-78972573-8
1058:
1051:
1027:
1019:
1009:
966:
948:
942:
933:MPDOSTIP.ZIP
929:OpenDOS 7.01
925:Novell DOS 7
921:NWDOSTIP.TXT
912:. Retrieved
902:
895:
815:
809:. Retrieved
800:
774:. Retrieved
763:
754:
713:
685:. Retrieved
670:
660:
655:(1+32 pages)
638:
632:. Retrieved
587:. Retrieved
577:
541:. Retrieved
477:kernel space
459:
348:DRVSPACE.BIN
344:DBLSPACE.BIN
328:Novell DOS 7
316:NetWare Lite
192:
181:
166:
162:A20 handlers
159:
128:
106:. The Intel
65:
45:
41:
35:
25:
1341:freedos-dev
1274:PC DOS
1254:OS/2 Museum
1042:DISPLAY.SYS
1020:freedos-dev
801:freedos-dev
481:A20 handler
413:Unreal mode
365:(1995) and
332:DISPLAY.SYS
280:COMMAND.COM
275:BUFFERSHIGH
215:HIDOS.SYS /
199:Windows/286
143:motherboard
21:High memory
1383:Categories
1351:2020-02-21
1327:2006-10-15
1264:2020-02-19
1228:2009-03-29
1202:2017-09-03
1161:2021-11-28
1131:DOSKEY.COM
1125:2020-02-18
1092:2020-02-18
1038:XMS memory
998:) Errata:
914:2012-01-11
885:CONFIG.SYS
881:MS-DOS 7.0
857:MS-DOS 5.0
817:MS-DOS 7.0
811:2017-09-09
776:2020-02-18
745:) Errata:
687:2021-12-15
672:DR DOS 6.0
634:2019-07-22
589:2019-11-18
581:(e-book).
543:2017-07-02
491:References
473:DR DOS 6.0
395:Low memory
381:(1995) to
379:MS-DOS 7.0
340:MS-DOS 6.2
233:MS-DOS 5.0
223:CONFIG.SYS
160:So-called
147:logic gate
131:low memory
1188:Newsgroup
1135:SHARE.EXE
641:DRDOS 5.0
617:Microsoft
529:Newsgroup
336:codepages
269:HIBUFFERS
203:HIMEM.SYS
195:Microsoft
139:circuitry
124:0000:0000
120:FFFF:0010
88:FFFF:0010
68:real mode
48:) is the
1345:Archived
1295:A20 line
1258:Archived
1196:Archived
1168:MS-DOS 7
1155:Archived
1119:Archived
1086:Archived
1030:PC DOS 7
1024:Archived
908:Archived
873:DBLSPACE
805:Archived
770:Archived
768:. 2000.
681:Archived
625:Archived
583:Archived
537:Archived
418:Rebasing
389:See also
356:DRVSPACE
352:DBLSPACE
338:. Under
260:DOS=HIGH
188:A20 gate
175:or even
84:Megabyte
1190::
853:NWCACHE
849:NLSFUNC
837:BUFFERS
531::
469:NLSFUNC
320:NWCACHE
312:NLCACHE
304:TASKMAX
292:NLSFUNC
141:on the
82:1
74:of the
1291:CALL 5
1278:MS-DOS
1270:86-DOS
1080:
1070:
987:
977:
867:up to
865:PC DOS
847:, and
825:DR-DOS
736:
726:
677:Novell
554:DR-DOS
471:under
375:/NOHMA
371:DOSKEY
359:/NOHMA
308:Novell
70:, the
40:, the
1303:=HIGH
919:(NB.
877:HIMEM
841:SHARE
650:BradS
628:(PDF)
613:(PDF)
550:stubs
465:SHARE
451:Notes
409:(EMS)
403:(XMS)
322:from
314:from
296:SHARE
240:=HIGH
235:(via
227:HIDOS
219:=FFFF
213:(via
135:PC AT
96:80286
76:Intel
54:bytes
1287:8086
1078:ISBN
1068:ISBN
1034:2000
985:ISBN
975:ISBN
927:and
875:and
869:2000
863:and
861:6.22
845:KEYB
833:BDOS
831:and
829:BIOS
821:RBIL
765:RBIL
734:ISBN
724:ISBN
467:and
367:2000
326:and
294:and
288:KEYB
244:BIOS
221:and
217:BDOS
184:stub
112:8088
110:and
108:8086
79:8086
1369:'s
1367:IBM
1363:A20
1301:DOS
1282:PSP
645:UMB
383:8.0
310:'s
300:/MH
238:DOS
229:=ON
209:'s
151:A20
102:to
66:In
58:IBM
50:RAM
46:HMA
36:In
1385::
1354:.
1343:.
1339:.
1315:.
1267:.
1256:.
1252:.
1194:.
1164:.
1153:.
1128:.
1117:.
1113:.
1101:^
1084:.
1076:.
1022:.
1018:.
983:.
957:^
859:-
843:,
814:.
803:.
799:.
785:^
762:.
732:.
696:^
669:.
637:.
598:^
565:^
535:.
499:^
369:,
290:,
126:.
61:AT
1330:.
1276:/
1231:.
1205:.
1095:.
1032:/
991:.
917:.
779:.
740:.
690:.
592:.
546:.
354:/
346:/
44:(
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.