Programmierung unter DOS

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Dr.Önologie

Re: Programmierung unter DOS

Beitrag von Dr.Önologie »

Also...selbe Reihenfolge :-) QBASIC, dann BorlandC, in der Schule natürlich auch. Jetzt DJGPP. Ich verwende allerdings neben RHIDE auch gerne Necromancer Navigator - warum? Super Editor und ich kann leicht zwischen Datein switchen und in Datein bzw. nach Datein suchen.

Allegro...jaja...eigentlich ne coole Library...aber noch immer keine Soundtreiber für moderen Karten...wie AC97 (modern? ;-), nicht einmal SBLIVE PCI. Und jetzt soll auch noch alles umgekrämpelt werden. Danach schauts schlecht für DOS aus. Allerdings...die Pläne gibt es schon seit Jahren. :-)

So - mein Größtes Problem bei dem Ganzen: Die Zeit ;-)
bttr

Beitrag von bttr »

Turbo sieht bei mir aber von der Syntax gaaaanz anders aus - naja egal.
Dann mußt du wohl ein Spezial-Turbo-Pascal oder -Delphi haben. Aber es ist nicht mein Problem, wenn du die Gemeinsamkeiten nicht erkennst.
Was ich programmieren will geht eigentlich so in die Richtung Spiele - Strategie-Game usw.
Aja, wie immer. Kennst noch nicht mal die Syntax einer Sprache und willst gleich ein Spiel schreiben. Tue dir selbst einen Gefallen und schraube deine Erwartungen herunter um unnötigen Frust zu vermeiden! Wenn du dich für C entscheidest, dann guck dir z.B. http://www3.telus.net/alexander_russell ... uction.htm an.

Und wenn du für DOS programmieren willst, wovon ich in diesem Forum einfach mal ausgehe, dann besorge dir auf jeden Fall ein Buch über Hardware (z.B. Michael Tischers "PC Intern" 3.0 oder 4.0) und arbeite das durch. Ohne Verständnis für die Hardware geht's unter DOS nicht.
Aber wie gesagt, irgendwie haut die Syntax nicht mit den Beispielen im Tutorial hin....
Ohne präzisere Angaben wird dir da niemand helfen können.
Aspirant

Beitrag von Aspirant »

bttr hat geschrieben: Aja, wie immer. Kennst noch nicht mal die Syntax einer Sprache und willst gleich ein Spiel schreiben.
Was bildest du dir ein wer du bist?! Woher willst du wissen, dass ich noch nie mit der Syntax einer Sprache zu tun hatte?? Komm mal wieder runter!! :-x
bttr hat geschrieben: Dann mußt du wohl ein Spezial-Turbo-Pascal oder -Delphi haben. Aber es ist nicht mein Problem, wenn du die Gemeinsamkeiten nicht erkennst.
Seeeehr kooperativ :evil:

Wenn du meinst du kanns es besser, dann sag mir mal, wo deiner Meinung nach die Gemeinsamkeit zwischen.... ach lassen wir das - zum Schluss kommen hier noch tonnenweise Ermahnungen, weil mich der Admin wieder falsch versteht.

Tschüss Leutz, euer Forum ist mir zu blöd.

PS.: Das war mein letztes Posting hier.
bttr

Beitrag von bttr »

Was bildest du dir ein wer du bist?!
Ich bilde mir nix ein. Ich weiß, wer ich bin.
Woher willst du wissen, dass ich noch nie mit der Syntax einer Sprache zu tun hatte??
Du hast doch selbst geschrieben, daß noch nicht mal mit dem Tutorial klarkommst. Und Tutorials sind nun mal was für absolute Einsteiger. Ich hätte dich ja auch gleich auf Kernighan verweisen können...
Komm mal wieder runter!!
Ich? Guck bitte in einen Spiegel!
Tschüss Leutz, euer Forum ist mir zu blöd.
Genau sowas hatte ich erwartet. Tut mir leid, Bubi, daß wir nicht alle nach deiner Pfeife tanzen. 8-)
PS.: Das war mein letztes Posting hier.
Und tschüss... Wenn du dich beruhigt hast und sachlich mit uns diskutieren willst, kannst du gern wiederkommen.
Shadowraider

Beitrag von Shadowraider »

Servus,

hat von euch jmd. schonmal mit FreePascal ( :arrow: natürlich DOS-Version) gearbeitet? Ja? Dann kann mir doch sicher jmd. sagen, wie ich - ähnlich wie bei Borland Delphi - einzelne Pixel einfärben kann, oder?

Danke im Vorraus :wink:
elianda
DOS-Übermensch
Beiträge: 1150
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Beitrag von elianda »

Wenn das aehnlich wie Turbo Pascal 7 ist, dann schaue mal nach der Unit Graph, nach dem Borland Graphics Interface (BGI) und dann nach putpixel.

Ansonsten direkt mit mem[$a000:xxxx]:=byte;

Oder mit einem RAM-BackBuffer und kopieren (REP STOSD).
Brueggi

Beitrag von Brueggi »

Programmiererfahrungen unter DOS sind bei mir noch nicht so ausgeprägt. Früher (und als erstes) QBASIC, dann, nach ausgiebigen Selbststudium Turbo Pascal (nehm ich heut noch gern) und im Moment x86-Asm. Für letzteres hab ich auf meinem "HauptPC" den Flat Asm für Windows und auf meinem "Retro-PC" (486SX) den Flat Asm für DOS installiert (wobei der unter Win 3.11 läuft).
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Falls es jemanden interessiert...

Beitrag von DOSferatu »

Ich bastle mit Pascal 7.0. Und dem in Pascal eingebauten Assembler. Ja, ich weiß - keine 386er (und darüber) Befehle. Die baue ich mit "rohen" Bytes da ein. Ich weiß - das ist eigentlich Masochismus. Ich wollt mir mal selber n einfachen Assembler bauen, wär eigentlich kein Problem, bin nur mit anderen Dingen beschäftigt, die bei mir irgendwie im Moment höhere Priorität haben. (Ach, wenn der Tag nur 48 Stunden hätt...)

Hab übrigens n Haufen selbstgebaute nützliche Pascal-Units hier. Beispielsweise n 4-Ebenen-Scrollendes Leveldings mit 16x16er Blocks (sogar halbtransparent möglich). Und Sprites, die dreh-/vergrößer-/verkleiner/spiegel- und umfärbbar sind... (alles im sog. Mode-X) Wär vielleicht nützlich, wenn jemand n 2D Spiel für DOS coden will.
Falls jemand nicht weiß, wovon ich jetzt rede, es ihn aber trotzdem interessiert - einfach fragen. Dafür ist das ja hier n Forum...

Hm - und irgendwie hab ich auch schon paar eigene kleine Programmiersprachen entwickelt, die ich halt für spezielle Projekte gebraucht habe. (Wird dann in so tokensierten Code gewandelt.)

Falls es jetzt jemanden *nicht* interessiert hat: Selber schuld, hättst es ja nicht zu lesen brauchen (siehe Überschrift).

(Achja: Bin froh, endlich wieder Internetzugang zu haben - und wieder am DOSforum teilnehmen zu können.)

Bis bald.
Saudi-Arabien
Windows 3.11-Benutzer
Beiträge: 6
Registriert: Sa 28. Feb 2009, 01:29

Re: Programmierung unter DOS

Beitrag von Saudi-Arabien »

Hallo.
Locutus hat geschrieben:Hallo zusammen,

mich würde mal interessieren, wer hier Programmiererfahrungen unter DOS hat.
Meine Programmiererfahrungen unter DOS beschränken sich auf QB und Borland Pascal.

Ich habe zwar auch eine alte Turbo C++ Version, allerdings habe ich in C++ nur ein recht einfach gestricktes Zahlenraten-Spiel programmiert(keine Grafik, nur ASCII).

Inzwischen habe ich jedoch fast alle Kenntnisse über QB, BP und TC++ vergessen, da ich zuletzt vor ungefähr 9 Jahren unter DOS programmiert habe.
Benutzeravatar
BastetFurry
Solitärspieler
Beiträge: 15
Registriert: Do 30. Jul 2009, 01:39
Wohnort: Essen

Re: Programmierung unter DOS

Beitrag von BastetFurry »

(Yay! Erstpost!)

Hier wurde irgendwie DER (inoffizielle) QB45/QBasic Nachfolger unterschlagen: FreeBASIC
Gibt natürlich auch eine DOS Version welche sämtlichen Bibliotheken des DJGPP nutzen kann und es hat alle Annehmlichkeiten einer modernen Programmiersprache.
Brueggi

Re: Programmierung unter DOS

Beitrag von Brueggi »

@Dosferatu: Auch wenn es jetzt nichts mit DOS in dem Sinne zu tun hat (wäre vielleicht in Off-Topic besser aufgehoben), aber es passt grad so gut. Da ich gerade ein eigenes DOS entwickle - hättest Du nicht mal lust, eine deiner Programmiersprachen dafür zu portieren? Mir fehlt einfach die Zeit - bisher schreibe ich jedes Programm noch im Flat-Assembler. Einziges Minimum an Software ist, das sie mind. auf einem 80286 läuft und (wenn benötigt) auf VGA zurückgreift. Ich werkel schon über eineinhalb Jahre an dem DOS - aber alleine ist das so eine Sache.... :-(
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Programmierung unter DOS

Beitrag von DOSferatu »

Brueggi hat geschrieben:@Dosferatu: Da ich gerade ein eigenes DOS entwickle - hättest Du nicht mal lust, eine deiner Programmiersprachen dafür zu portieren?
Äh, nö. Sind ja keine Compilersprachen. Sind eher so Art Skripte.
Das "Crown Basic", was ich entwickelt habe, ist eine Interpretersprache (tokenbasiert), hauptsächlich zum Bauen von kleinen GUI-Anwendungen. Ich habe das damals entwickelt, weil es da von der Firma, in der ich mal gearbeitet habe, diesbezüglichen Bedarf gab. Ich hatte denen erst so ein Provisorium in Excel gebaut - damit waren die aber dann so zufrieden, daß sich das andere (das Crown) dann erledigt hatte. Es funktioniert, soweit es fertig ist, ich habe das aber nie 100%ig fertig gemacht, sondern eher 95%ig. Das Crown hat eine richtige, hochsprachentypische Syntax.
Die anderen Skriptsprachen sind eher angepaßt an das jeweilige Programm, in dem sie benutzt werden. Die werden dann eben geparst und ausgeführt. Diese Sprachen sind eher relativ einfach gehalten.
Eine Compilersprache habe ich selbst noch nicht gebaut, da es für mich noch nie nötig war.
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: Programmierung unter DOS

Beitrag von freecrac »

Ich programmiere am liebsten alles in Assembler und benutze für sehr kleine Anwendungen Debug um damit *.com-Files zu erzeugen (das läßt sich auch aus einer Batch-Datei heraus erledigen) und für etwas größere Anwendungen benutze ich MASM 5, oder MASM 6(mit link.exe von MASM 5) um damit 16Bit-Realmode-Anwendungen für DOS zu erstellen. Um den gesamten 4GB-Adressraum auch unter purem DOS adressieren zu können verzichte ich dabei auf die Verwendung von em386.exe und vergleichbare Memorymanager und schalte lieber selber in den Unrealmode um den physikalisch vorhandenen Speicher(der nicht belegt ist) selber zu verwalten. Auch ist es damit möglich Vesamodi mit einem linearen Zugriff auf den Framebuffer im 4.GB zu benutzen. Mit Himem.sys(vor Version 3) und darin verwalteter XMS-Speicher gibt es damit keine Probleme und so ist es auch mit dem Unrealmode möglich diesen von Himem.sys verwalteten XMS-Speicher zu verwenden, um damit z.B eine 64MB-große Ramdisk zu benutzen. Meine Anwendungen für den Unrealmode verwenden den Speicher ab dem 65. Megabyte als Datenspeicher. Den unteren Speicher im ersten Megabyte lasse ich jedoch weiterhin von DOS verwalten und fordere diesen Speicher ggf. von DOS auf konventionelle Weise an.

Siehe dazu auche meine Beiträge unter "Probleme mit VESA auf neuen Rechnern" wo ich Programmbeispiele für den Unrealmode und lineare Vesamodi plaziert habe:
http://www.dosforum.de/viewtopic.php?f=15&t=2921

..
Mit der Programmiersprache C habe ich erhebliche Probleme und komme beim Lernen dieser Sprache nicht so recht voran. So kann ich C-Listings immer nur schwer bis gar nicht entziffern. Die Programmiersprache Pascal kenne ich zwar auch nicht so richtig, aber es ist mir schon gelungen ein Pascal-Source und den darin enthaltenen Syntax zu erkennen und in Assembler etwas Adequates nach zu programmieren.
..

Meine persöhnliche (unsortierte) Todo-Liste für DOS (*ich bin noch in der Lernphase*):
- PS2-Mouseabfrage vom Tastaturport (ich benutze zur Zeit noch int 15h)
- GTF berechnen
- 2D-Blitting mit GPU
- Vesa-AF
- hohe Videomodi auf modernen GraKas selber einstellen ohne Hilfe eines BIOS
- Vesa Monitor Control Command Set (MCCS)
- auf dem secondary display device einen anderen Vesamode einstellen der den Inhalt des secondary framebuffer zur Anzeige bringt
- REX für 64 Bit im Realmode
- weitere CPUs eines dualcore/quadcore selber initialisieren und für DOS-Anwendungen nutzbar machen
- USB
- PCI-Bus
- I²C-Bus

(*) Über Dokumente, Unterlagen, betreffende Links und Informationen würde ich mich freuen.

Ich weiss es nicht genau ob Microsoft MASM 5 irgendwo selber zum download anbietet, aber ich habe MASM 5 mit google vor einigen Tagen noch hier gefunden:
http://microprocessados.lesc.ufc.br/dow ... masm51.zip

Ein minimales Rohgerüst zum Assemblieren mit MASM 5/6:

Code: Alles auswählen

.MODEL SMALL
;----------------
;   für MASM 5
.386P              ; wir benutzen 32 Bit Register/Offset/Operanden ab 80386+ PM-Befehle werden auch erkannt
;----------------
;  ".386P" kann für MASM 6.14 durch folgende Zeilen ersetzt werden
;  .686P
;  .MMX 
;  .XMM
;  .3DNOW
;----------------

.387                ; FPU

Konstante = 1

  CODE SEGMENT use16 'CODE'
 assume cs:CODE,ds:DATEN,ss:STAPEL
 org 100h
START:
          mov      ax, DATEN
          mov      ds, ax

BEGINN:

          call BLURB

RAUS:

          xor      cl, cl             ; kein Fehler

BACK:  mov      al, cl             ; ERRORLEVEL holen
          mov      ah, 4Ch            ; Rücksprung, Programm-Ende
          int    21h
;-----------------------
; S u b r o u t i n e n
;-----------------------
 org START + ((($-START)/16)*16)+16   ; Code-Alignment
;-----------------------
BLURB:

          ret
;----------------------
  CODE ends
;------------------------------
; D A T E N - B E R E I C H
;------------------------------
  DATEN SEGMENT use32 'DATA'
 org 0

WERT   DD ?

  DATEN ends
;------------------------------
;   S t a c k  B e r e i c h
;------------------------------
  STAPEL SEGMENT use16 STACK 'STACK'
       DB 10h dup (0)
  STAPEL ends
;------------------------------
 end
:----------------------
; Assemblieren mit:
:----------------------
; MASM 5:
; MASM /Z Test.asm,Test.obj,Test.lst,Test.crf
; LINK /CP:1 Test.obj,Test.exe,Test.map,,
:----------------------
; MASM 6(mit link.exe von MASM 5):
; ML /c /Zm Test.asm
; LINK /CP:1 Test.obj,Test.exe,,, 
; (Hinweis: Die "ML.exe" von MASM 6.14 läßt sich nur unter Windows ausführen.)
Dirk
Zuletzt geändert von freecrac am Mo 26. Apr 2010, 17:41, insgesamt 3-mal geändert.
Westbeam
HELP.COM-Benutzer
Beiträge: 31
Registriert: So 14. Mär 2010, 21:31

Re: Programmierung unter DOS

Beitrag von Westbeam »

Ich programmiere mit FreeBasic Anwendungen und mit NASM eigene (bootbare) Betriebssysteme(manchmal). Am liebsten code ich FakeOSe/GUIs für DOS. Im Moment bin ich an einer ziemlich umfangreichen DOS-GUI dran. Bild
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Programmierung unter DOS

Beitrag von DOSferatu »

@freecrac: Mit I2C haben ein Kumpel und ich uns mal eine Zeitlang beschäftigt. Das Protokoll ist relativ einfach.
Wir (also ich) hab das damals mal auf dem Parallelport (LPT) gemacht und er hat so ein Matrixdisplay angeschlossen, das eben mit I2C angesteuert werden mußte.
Falls Interesse, kann ich die entsprechenden Informationen zu I2C mal raussuchen.
Falls Interesse an der hardwarenahen Programmierung von Schnittstellen im Allgemeinen, kann ich nur immer wieder
www.beyondlogic.org
empfehlen. Eine sehr sehr nützliche Seite. (Da wird übrigens auch USB erwähnt.)
Antworten