Die Ursache des ganzen Kummers ist, daß der Turbo-Compiler BIOS-Aufrufe zur Berechnung des Diskettenplatzes benutzt.
Diese Aufrufe werden von CP/M 3.0 nicht in genau derselben Weise wie von CP/M 2.0 unterstützt, mit der bekannten Folge, daß der Compiler auf einer 180-KByte-Diskette schon mal '320 KByte free' meldet.
Der Patch ersetzt die alte Diskettenplatz-Berechnung in Turbo-Pascal 3.0.
Er ist identisch mit dem für die Turbo-Version 2.0, nur die Adreßlage wurde angepaßt.
Er bedient sich der BDOS-Funktion 2Eh (dezimal 46), die die Anzahl der freien 128-Byte-Records berechnet und sie in drei aufeinanderfolgenden Bytes am Anfang des DMA-Bereichs ablegt.
Dieser vom BDOS ermittelte Wert gelangt in das HL- und A-Register, wird per Schiebebefehl durch 8 geteilt, um die freie Kapazität in Kilobyte zu erhalten, und zur Ausgabe an die entsprechende Routine des Compilers übergeben.