DOSBOX Programmierung?
Hey, ich schreibe morgen eine Arbeit (Informatik) u.a. über das Programmieren einer DOSBOX. (Bild zu den Befehlen die wir haben ist unten) Meine Frage, ich weiß zwar, wie ich eine Datei programmiere und diese dann in der DOSBOX öffne aber nicht, wie ich direkt in der DOSBOX ein Programm schreiben kann.
(Programm in Datei:
Bsp.:
00 inm 10 //x in Speicherzelle 10 schreiben
01 inm 11 //y in Speicherzelle 11 schreiben
02 lda 10 //Die Zahl in Speicherstelle 10 in den Akkumulator laden
03 add 11 //Die Zahl aus Speicherstelle 11 zum Akkumulator addieren
04 sta 24 //Speichere den Inhalt des Akkumulators in Speicherstelle 24
05 out 24 //Gebe den Inhalt der Speicherstelle 24 aus
06 end //Programm beenden
)
Beste Grüße

3 Antworten
Mit dem Schreiben eines Assembler-Listing alleine bekommen wir noch keine ausführbare Datei die in DOSBOX gestartet werden kann. Wir brauchen dazu ein Assembler, wie MASM, NASM oder TASM und ein Linker für 16 bit Executable, oder Debug. Diese Programme muss man in DOSBOX aufrufen von der Kommando-Zeile, oder von einer Batch-Datei die von der Kommando-Zeile gestartet wurde.
Alle Datei-Namen dürfen nur 8.3 Buchstaben für Dateiname und Datei-Extension haben und kein Leerzeichen, keine Sonderzeichen, keine Umlaute.
Mit dem Assembler wird eine Objekt-Datei erzeugt woraus erst der Linker eine ausführbare Datei macht.
Hier habe ich eine Batch-Datei für MASM 5 die mit angehängten Datei-Namen ohne Extension gestartet wird und diesen Namen verwendet um eine NAME.exe zu erschaffen von einem NAME.asm -Listing.
Beispiel: C:\>ASSEMB.BAT TEST
Erzeugt von einer TEST.asm eine TEST.exe.
@ECHO OFF
REM ASSEMB.BAT
MASM /Z %1.asm,%1.obj,%1.lst,%1.crf
if ERRORLEVEL 1 goto ENDE
CREF %1.crf,%1.ref
if ERRORLEVEL 1 goto ENDE
LINK /CP:1 %1.obj,%1.exe,%1.map,,
if ERRORLEVEL 1 goto ENDE
if exist *.crf del *.crf
if exist *.obj del *.obj
REM %1.exe
:ENDE
DOSBOX löst bei mir andere Vorstellungen aus. Es sieht eher so aus, als würdest du Assembler programmieren wollen.
Was verstehtst du unter DosBox? Suchst du einen Editor? Welches Betriebssystem? Welche Architektur?
Ich hab jetzt mal Wikipedia konsultiert. wenn deine dosbox ein Dos mitbringt gibt es evt edit oder edlin als Editoren. mit
copy con datei.asm
"quelltext"
^Z
solltest du den quelltext aus der Komandozeile in die Datei "datei.asm" schreiben können ctrl + Z beendet die Eingabe
viel Erfolg
Also unser Lehrer sagt es sei assembler, aber wir programmieren eine DOSBOX xD manchmal versteht man Lehrer nicht richtig, deshalb kanns auch sein, dass ich was falsch gemacht hab..
Beste Grüße
Genauso, wie wenn du das Programm außerhalb der Doxbox schreibst. Du brauchst nur einen Editor in deiner Dosbox, damit du schreiben kannst.
Könntest vlt. Northon- oder Midnightcommnder nehmen... ;-)
Ich verwende DEBUG. COM von FREEDOS, um damit kleine executable COM files in DOSBOX zu programmieren. Dosbox emuliert ein PC mit Intel 80386 32 bit CPU.
Running with a little help from Debug from the Freedos Operating System: (provide 32 bit register/instructions)
Download and extract debug into the mounted folder of DOSBOX.
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/debug.html
Dazu schreibe ich alle Befehle in eine Batch-Datei. Beispiel: COLOR.BAT. Diese Batch-Datei wird mit einer angehängten Farbe gestartet. Beispiel:
COLOR.BAT 1b
@echo off
REM Need one parameter(%1) attached.
REM Usage: *Color.bat* color
REM Example: COLOR.BAT 1b
echo acs:100>tmp.deb
echo mov ax,b800>>tmp.deb
echo mov ds,ax>>tmp.deb
echo mov cx,820>>tmp.deb
echo xor di,di>>tmp.deb
echo mov al,%1>>tmp.deb
echo mov [di+1],al>>tmp.deb
echo add di,2>>tmp.deb
echo dec cx>>tmp.deb
echo jnz 010C>>tmp.deb
echo ret>>tmp.deb
echo.>>tmp.deb
echo n Color.com>>tmp.deb
echo rcx>>tmp.deb
echo 16>>tmp.deb
echo wcs:100>>tmp.deb
echo q>>tmp.deb
debug<tmp.deb>nul
del tmp.deb
Color.com
del Color.com
The batch file contains some pipe operators (> >> <) for to redirect the output of the echo commands into a new text file and to start Debug with the file. And the output contains some internal Debug commands and a routine made with assembler mnemonics to create and run a tiny executable com file. The routine use the attached color and writes it directly into the framebuffer of the DOSBOX text screen.
Vermutlich geht es darum, den von DOSBox emulierten Prozessor in Assembler zu programmieren.