Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Stefan Reuther Newsgroups: de.comp.lang.assembler Subject: Re: Image deflaten Date: Thu, 18 Jun 2020 17:59:54 +0200 Lines: 44 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net LBNC17t2FI/hsSExTeHPMQnJSABtjstXC5daHcsUmgSahFXic6 Cancel-Lock: sha1:MlRQvs6DBTvrsTUTafuLmwkNtu8= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 Hamster/2.1.0.1538 In-Reply-To: Xref: csiph.com de.comp.lang.assembler:1191 Hallo, Am 17.06.2020 um 18:46 schrieb Jens Kallup: > Am 17.06.20 um 18:18 schrieb Stefan Reuther: >> Also sucht man sich einfach einen schönen Bereich raus, der nicht schon >> fest vom System vergeben ist, und benutzt den. > > schön von Dir zu hören. > Mal angenommen, das segment 0x1000 mit offset 0x0000, also 1000:0000 > oder linear 0x10000000 > dürfte an die Grenze von 1 MB kommen? Nein, hat Bernhard ja schon erklärt. Ich hatte die Memory Map verlinkt. Zusammengefasst: 00000 - 004FF = IVT + BIOS Daten 00500 - 07BFF = frei 07C00 - 07DFF = hier wurde dein Bootsektor hingeladen 07E00 - ????F = frei ????0 - 9FFFF = EBDA A0000 - BFFFF = Bildspeicher Segmentadresse der EBDA steht an 0040E (also 0040:000E oder 0000:040E, was immer dir besser gefällt). Damit ist hinter deinem Bootsektor (also 07E0:0000 oder 0000:7E00 oder wie auch immer) bis zur EBDA alles frei, um die 600k. > jetzt müsste man aber erstmal die Daten in den Speicher legen. > Ok, das macht man mit read sectors vom int 0x13. > Das gibt dann den Bereich wieder zurück wo der Puffer liegt. Die Pufferadresse musst du angeben (ES:BX). http://www.ctyme.com/intr/rb-0607.htm Wenn du mehr als die genannten 600k brauchst, brauchst du Protected Mode, dann kannst du aber den INT 13 nicht mehr verwenden. Du kannst auch deinen eigenen Code erstmal verschieben, z.B. an 00500, um noch ein paar k mehr zu bekommen. Stefan