N
Ishildur schrieb:
@Nobuo T
Und was fuer ein Moerderprogramm schreibst du,...
Naja, eigentlich will ich nur ein simples Pong schreiben, aber da ist es eben ärgerlich, wenn sich das Pad nach dem laaaang,kurz,kurz,kurz Prinzip beschleunigt!
Axo. Hm, IMHO waere dann die praktischste Loesung, eine kleine Funktion vor den BIOS IRQ-Handler an int 09h zu installieren. In dieser kannst du als erster den Keyboard Scan-Code von Port 60h auslesen und entsprechende Flags in deinem Programm setzen. Anschliessend springst du weiter zum BIOS IRQ-Handle und laesst ihn die restliche Drecksarbeit mit der Hardware erledigen.
Ishildur schrieb:
E0000h ist idR. fuer das EMS Speicherfenster oder ein BIOS-Shadow belegt. In den Bereich zwischen 98000h und 100000h solltest du wirklich nur schreiben, wenn du genau weist, was du da tust.
Ok, sowas habe ich bereits befürchtet! In welchen Speicherbereicht darf ich denn schreiben. Unterhalb von 0a000h fängt dann doch der Stack an, oder?
Der Speicherbereich zwischen 07C00 und 98000 steht dir zur freien Verfuegung. Wo du fuer dein Programm Code, Daten und Stack hinlegst, haengt allein von dir, bzw. (sofern vorhanden) auch dem DOS ab. Da du dein Programm scheinbar ohne irgendein DOS praktisch als eigenes OS konzipierst, solltest du schon grob wissen, wie sich dein Programm ueber den Speicher verteilt, und wo da noch Platz ist. Dein PONG wird doch wohl kaum die ganzen unteren 640kByte einnehmen.
Also suchst du dir entweder auf diese Weise selbst einen freien Speicherbereich, oder laesst deinen Assembler das machen, indem du ein extra Datensegment definierst und da ein 64kByte grosses Array reinpackst.
Ishildur schrieb:
Willst du dein Programm unbedingt <386-kompatibel halten, oder warum 16Bit?
Ja, das Spiel muss auf jedem x86 kompatiblen Rechner (inkl. x86) lauffähig sein, ohne Betriebssystem auskommen (keine DOS - Interrupts)
Das Ganze ist eine Übung im Fach "Grundlagen der Informatik" an der Fachhochschule
Oha - na herzliches Beileid. Keine Ahnung, wie grafisch aufwendig dein PONG ist, aber evtl. solltest du dir dann ueberlegen, ob du die Sache nicht dahingehend optimieren kannst, dass du entweder nicht immer den ganzen buffer kopieren musst, oder evtl. sogar ohne auskommst. Das Flimmern kommt ja eigentlich nur zustande, wenn du helle Pixel beim Neuzeichnen deines Bildes kurzzeitig mit dunklen uebermalst oder andersherum.
Ishildur schrieb:
MASM kann AFAIK keine Binaerdateien in seine OBJs einbinden. Also entweder Assembler wechseln (NASM kann sowas zB.)
Kennst NASM auch die Intel - Syntax? (Ich hasse diesen AT&T Hack) Kann denn NASM 16-Bit Programme erstellen?
Beides: ja. Ist sogar ein quick-guide fuer MASM-Umsteiger in der Hilfe.