MSDOS 6.x Datum auslesen und in 3 variablen tag, monat, Jahr zuweisen
Hallo Gemeinde,
Konnte bisher leider mein alten msdos 6.2 überreden folgendes zu tun:
Dies habe ich aus diesem Forum:
set datum=%Date%
set tag=%Datum:~0,2%
set mon=%Datum:~3,2%
set jahr=%Datum:~8,2%
echo %tag%.%mon%.%jahr%
Im Dosbox vom XP geht es tadellos. Im reinen Dos 6.x geht es leider nicht.
Das aktuelle Datum konnte ich bereits in eine Datei mit folgenden Anweisung speichern:
ver | date >temp.txt
Wie kann ich nun aus der temp.txt die einzelnen Komponenten tag, monat, jahr auslesen und in entsprechenden variablen zuweisen ?
Diese Anweisung
set tag=%datum:~0,2%
geht auch nicht im MSDOS 6.x (im Dosbox XP : ja)
Hat jemand Tips für mich ?
Vielen herzlichen Dank für Euere Hilfe.
Konnte bisher leider mein alten msdos 6.2 überreden folgendes zu tun:
Dies habe ich aus diesem Forum:
set datum=%Date%
set tag=%Datum:~0,2%
set mon=%Datum:~3,2%
set jahr=%Datum:~8,2%
echo %tag%.%mon%.%jahr%
Im Dosbox vom XP geht es tadellos. Im reinen Dos 6.x geht es leider nicht.
Das aktuelle Datum konnte ich bereits in eine Datei mit folgenden Anweisung speichern:
ver | date >temp.txt
Wie kann ich nun aus der temp.txt die einzelnen Komponenten tag, monat, jahr auslesen und in entsprechenden variablen zuweisen ?
Diese Anweisung
set tag=%datum:~0,2%
geht auch nicht im MSDOS 6.x (im Dosbox XP : ja)
Hat jemand Tips für mich ?
Vielen herzlichen Dank für Euere Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 118729
Url: https://administrator.de/contentid/118729
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo flash4you,
Herbert Kleebauer hat das für Dos mit Hilfe von Ascii Assembler schon vor langer Zeit gelöst.
http://groups.google.de/group/alt.msdos.batch.nt/msg/8b9408bb301e6bc4?h ...
Gruß
LotPings
Herbert Kleebauer hat das für Dos mit Hilfe von Ascii Assembler schon vor langer Zeit gelöst.
http://groups.google.de/group/alt.msdos.batch.nt/msg/8b9408bb301e6bc4?h ...
Gruß
LotPings
Na ich würde weil ich es gut kann in Delphi schreiben aber
sonst schau mal VB oder so .. Wobei es läuft nur auf DOS kein Windows oder ...
Dann geht script und VB nicht
kannst du nicht etwas Turbo Pascal oder so da gibt es freie Compiler und dann geht das schon
ALS Param übergibst du DD oder mm oder jj oder jjjj
do case als Auswahl
Result := Substr(datetostr(date)),ab,lang) ;
und als Result gibst du dann den richtigen Teil aus
Schau mal unter Pascal und so nach sollte einfach gehen
Hilft dir das was ?
Google mal OK !
Grüße Joachim
sonst schau mal VB oder so .. Wobei es läuft nur auf DOS kein Windows oder ...
Dann geht script und VB nicht
kannst du nicht etwas Turbo Pascal oder so da gibt es freie Compiler und dann geht das schon
ALS Param übergibst du DD oder mm oder jj oder jjjj
do case als Auswahl
Result := Substr(datetostr(date)),ab,lang) ;
und als Result gibst du dann den richtigen Teil aus
Schau mal unter Pascal und so nach sollte einfach gehen
Hilft dir das was ?
Google mal OK !
Grüße Joachim
Hallo zusammen!
Die ASCII-Assembler-Methode war mir auch neu und ich weiß ehrlich gesagt nicht so recht, was ich davon halten soll, zumal nur ein einziges falsches Byte verheerende Auswirkungen zur Folge haben kann?
Es ist schon ein paar Tage her, aber ich habe mir nach langer Zeit den Spass erlaubt, mal wieder ein Assembler-Programm (DateTime.Com 666 Byte groß) zu schreiben.
Dabei ging es mir darum, einen Code zu erstellen, der es nicht erforderlich macht, erst eine externe Batch aufrufen zu müssen, damit die Variablen verfügbar sind.
Meine erste Idee war daher, ein TSR-Programm zu schreiben, dass die Eingabe-Befehle abfängt (Inplementierung Dos-Befehlserweiterungen), um einen selbstdefinierten Befehl dazu zu verwenden, die entsprechenden Variablen per Set-Anweisungen über den Dos-Internen Command-Aufruf (INT 2Eh) zu setzen. Das hat leider nicht so funktioniert, wie ich mir das vorgestellt hatte.
Also habe ich eine normales COM-Programm geschrieben, dass ohne Dos-Funktion die Variablen direkt im Master-Environment bearbeitet.
Das Programm wurde unter der Dos-Version 7.10 (Win98-Dos) erstellt und getestet. Es funktioniert und dabei ist es egal, ob das Programm von der Console aus oder aus einer Batch-Datei heraus oder über eine neue Instanz des Befehlsinterpreters Command aufgerufen wird. Die Variablen sind immer sofort verfügbar.
Durch einen Dos-Versions-Test, läuft das Programm ab der Dos-Version 5.x und allen anderen Dos-Versionen, deren Master-Environ explizit den Namen COMMAND im zugewiesenen Speicherblock (MCB) aufweisen. Win-XP verwendet einen anderen Namen und wurde bewusst nicht mit einbezogen. Das würde auch wenig Sinn machen.
Leider habe ich keine Ahnung, wie man das Programm auf Admin.de hochladen kann, falls das überhaupt geht. Aber mich würde natürlich schon interessieren, ob das Programm unter Dos 5.x und Dos 6.x auch seinen Zweck erfüllt und fände es besonders nett, wenn jemand von euch den Test durchführen könnte. Ich dachte dabei an die Hinterlegung einer Pseudo-E-Mail-Adresse in meinem Postfach, an die ich die Datei als DateTime.Zip versenden könnte.
Der Aufruf in einer Batch-Datei würde dann in etwa so aussehen:
Und wenn's interessiert, hier der Assembler-Quellcode (enthält externe Definitionen):
Gruß Dieter
[edit] INIT-Proc geändert [/edit]
[edit] Auf Wunsch von "dumdideldum" ein Include-Geschnipsel mit den notwendigen Definitionen zum assemblieren [/edit]
Die ASCII-Assembler-Methode war mir auch neu und ich weiß ehrlich gesagt nicht so recht, was ich davon halten soll, zumal nur ein einziges falsches Byte verheerende Auswirkungen zur Folge haben kann?
Es ist schon ein paar Tage her, aber ich habe mir nach langer Zeit den Spass erlaubt, mal wieder ein Assembler-Programm (DateTime.Com 666 Byte groß) zu schreiben.
Dabei ging es mir darum, einen Code zu erstellen, der es nicht erforderlich macht, erst eine externe Batch aufrufen zu müssen, damit die Variablen verfügbar sind.
Meine erste Idee war daher, ein TSR-Programm zu schreiben, dass die Eingabe-Befehle abfängt (Inplementierung Dos-Befehlserweiterungen), um einen selbstdefinierten Befehl dazu zu verwenden, die entsprechenden Variablen per Set-Anweisungen über den Dos-Internen Command-Aufruf (INT 2Eh) zu setzen. Das hat leider nicht so funktioniert, wie ich mir das vorgestellt hatte.
Also habe ich eine normales COM-Programm geschrieben, dass ohne Dos-Funktion die Variablen direkt im Master-Environment bearbeitet.
Das Programm wurde unter der Dos-Version 7.10 (Win98-Dos) erstellt und getestet. Es funktioniert und dabei ist es egal, ob das Programm von der Console aus oder aus einer Batch-Datei heraus oder über eine neue Instanz des Befehlsinterpreters Command aufgerufen wird. Die Variablen sind immer sofort verfügbar.
Durch einen Dos-Versions-Test, läuft das Programm ab der Dos-Version 5.x und allen anderen Dos-Versionen, deren Master-Environ explizit den Namen COMMAND im zugewiesenen Speicherblock (MCB) aufweisen. Win-XP verwendet einen anderen Namen und wurde bewusst nicht mit einbezogen. Das würde auch wenig Sinn machen.
Leider habe ich keine Ahnung, wie man das Programm auf Admin.de hochladen kann, falls das überhaupt geht. Aber mich würde natürlich schon interessieren, ob das Programm unter Dos 5.x und Dos 6.x auch seinen Zweck erfüllt und fände es besonders nett, wenn jemand von euch den Test durchführen könnte. Ich dachte dabei an die Hinterlegung einer Pseudo-E-Mail-Adresse in meinem Postfach, an die ich die Datei als DateTime.Zip versenden könnte.
Der Aufruf in einer Batch-Datei würde dann in etwa so aussehen:
@echo off
datetime > Nul
echo.
echo Wochentag: %$wt%
echo Tag: %$dd%
echo Monat: %$dm%
echo Jahr: %$dy%
echo Datum: %$da%
echo.
echo Stunden: %$th%
echo Minuten: %$tm%
echo Sekunden: %$ts%
echo Zeit: %$ti%
echo.
datetime del > Nul
Und wenn's interessiert, hier der Assembler-Quellcode (enthält externe Definitionen):
; **************************************************************************
; * Funktionsbeschreibung: *
; * *
; * Dieses Programm setzt die Umgebungsvariablen Datum und Zeit und ist *
; * in den MSDOS-Versionen 5.00 bis 7.10 (Win98) lauffähig. *
; * *
; * Das Programm kann auf der Kommandozeile oder aus einer Batch-Datei *
; * heraus gestartet werden. Auch das starten einer neuen Instanz des *
; * Befehlsinterpreters mit COMMAND, hat keinen Einfluss auf die Verfüg- *
; * barkeit der Umgebungsvariablen, da diese ohne Dos-Funktion direkt in *
; * das Master-Environment geschrieben werden. *
; * *
; * Nach Aufruf des Programms, sind folgende Variablen verfügbar: *
; * *
; * Set Format *
; * Wochen-Tag $WT - Mo, Di, Mi, Do, Fr, Sa, So *
; * Tag_______ $DD - 00 *
; * Monat_____ $DM - 00 *
; * Jahr______ $DY - 0000 *
; * Datum_____ $DA - 00.00.0000 *
; * Stunden___ $TH - 00 *
; * Minuten___ $TM - 00 *
; * Sekunden__ $TS - 00 *
; * Zeit______ $TI - 00:00:00 *
; * *
; * Rückgabe: *
; * *
; * Exit - 0 = Kein Fehler, 1 = Fehler *
; * Msg - Fehlermeldung *
; **************************************************************************
INCLUDE SETUP.ASI ; Allgemeine Definitionen
_OPEN_COM_SEG
jmp near ptr __INIT@ ; Goto
; **************************************************************************
; * Definitionen und Daten *
; **************************************************************************
MCB_COM EQU 8 ; Mcb-Ofs Str Command
MCB_LEN EQU 3 ; Mcb-Ofs Len Environ
PSP_COM EQU 16h ; Psp-Ofs Seg Command
PSP_ENV EQU 2Ch ; Psp-Ofs Seg Environ
PSP_CMD EQU 80h ; Psp-Ofs Ofs Cmdline Param 'del'
@msg0 DB 'DateTime [del] - Set Environ Date/Time Version 1.0 Dieter K. 2009', $NL, '$'
@msg1 DB 'Falsche DOS-Version!', $NL, '$'
@msg2 DB 'Zu wenig Environ-Speicher!', $NL, '$'
@comm DB 'COMMAND', 0 ; Compare Command
@set DB '$WT=$DD=$DM=$DY=$DA=' ; Compare Set Variablen Date
DB '$TH=$TM=$TS=$TI=' ; Compare Set Variablen Time
@weekD DB 'SoMoDiMiDoFrSa' ; Set Date/Time Variablen
@date DB '$WT='
@dw DB 'WT', 0
DB '$DD='
@dd DB '00', 0
DB '$DM='
@dm DB '00', 0
DB '$DY='
@dy DB '0000', 0
DB '$DA='
@d1 DB '00.'
@d2 DB '00.'
@d3 DB '0000', 0
DB '$TH='
@th DB '00', 0
DB '$TM='
@tm DB '00', 0
DB '$TS='
@ts DB '00', 0
DB '$TI='
@t1 DB '00:'
@t2 DB '00:'
@t3 DB '00', 0, 0
@Date_Size = $ - @date
; **************************************************************************
; * Funktion: INIT - Umgebung prüfen und Programm initialisieren. *
; * *
; * Diese Funktion prüft ob eine gültige DOS-Version vorliegt und ob ein *
; * COMMAND-Environment vorhanden ist. Ausserdem wird der Speicherplatz *
; * für das Programm auf die tatsächliche Größe angepasst. *
; * *
; * Eingabe: Keine *
; * *
; * Ausgabe: Bei Fehler eine Meldung ausgeben und Programm beenden. *
; * *
; **************************************************************************
LocSym@ __INIT, < PROC NEAR >
_STACK_ EQU 512 + 15 + 1 ; Stack + Runden Para/Code Word
@@test_OsVersion:
mov ax, 3306h ; AX = Func Get Dos-Version
int 21h ; Get Dos-Version
cmp al, 0FFh ; Test Fehler
je short @@error ; Wenn ja Goto
cmp bl, 5 ; Test Version < 5
jb short @@error ; Wenn ja Goto
cmp bx, 3205h ; Test Version WinXP
je short @@error ; Wenn ja Goto
@@init_stack:
mov bx, ofs @Stack_Begin ; BX = Ofs Stack Begin
add bx, _STACK_ ; BX + Len Stack
and bx, 0FFF0h ; BX = Runden Para
cli ; Interrupts Aus
mov sp, bx ; SP = Ofs Stack Ende
mov bp, bx ; BP = Ofs Stack Ende
sti ; Interrupts Ein
@@set_mem_free:
mov ah, 49h ; AH = Func Free Memory
int 21h ; Free Prog-Size
@@set_new_mem:
mov ah, 48h ; AH = Func Set Memory
shr bx, 4 ; BX = Prog-Size Para
int 21h ; Set Prog-Size
@@test_command:
cld ; Set Vorw„rts
mov ax, w_ptr ds:[PSP_COM] ; AX = Seg Psp-Command
dec ax ; AX = Seg Mcb-Command
mov es, ax ; ES = Seg Mcb-Command
mov di, MCB_COM ; DI = Ofs Str-Command
mov si, ofs @comm ; SI = Ofs Cmp-Command
mov cx, 2 ; CX = Len Str-Command
rep cmpsd ; Test Command
je short @@ende ; Wenn ja Goto
@@error:
mov ah, 09h ; AH = Funktion Ausgabe
mov dx, ofs @msg1 ; DX = Ofs Msg
int 21h ; Meldung ausgeben
@@exit1:
mov ax, 4C01h ; AX = Func Prog Terminate Exit 1
int 21h ; Prog beenden
@@ende:
EndSym@ __INIT, < ENDP >
; **************************************************************************
; * Funktion: SETENV - Master-Environ initialisieren. *
; * *
; * Eingabe: Keine *
; * *
; * Ausgabe: Date/Time Variablen löschen und setzen *
; * *
; * Hinweis: Die Date/Time-Variablen werden aus Sicherheitsgründen *
; * einzeln gelöscht, weil durchaus die Möglichkeit besteht, *
; * dass Variablen bereits vom User gelöscht wurden. *
; **************************************************************************
LocSym@ __SETENV, < PROC PASCAL NEAR >
LOCAL envp:Word, size:Word, elen:Word
@@load_env:
cld ; Set Vorwärts
mov es, w_ptr ds:[PSP_COM] ; AX = Seg Psp-Cmd
mov ax, w_ptr es:[PSP_ENV] ; AX = Seg Cmd-Env
mov es, ax ; ES = Seg Cmd-Env
xor di, di ; DI = Ofs Cmd-Env
@@save_env_size:
dec ax ; AX = Seg Mcb-Env
mov fs, ax ; FS = Seg Mcb-Env
mov ax, w_ptr fs:[MCB_LEN] ; AX = Len Env Para
shl ax, 4 ; AX = Len Env Byte
mov w_ptr [size], ax ; Save Len Env Byte
@@init_find_env_end:
mov cx, ax ; CX = Len Env
xor ax, ax ; AX = EndOfVar (0)
@@find_env_end:
repne scasb ; Find EndOfVar
cmp b_ptr es:[di], 0 ; Test EndOfAllVar
jne short @@find_env_end ; Wenn nein Goto
inc di ; DI + EndOfAllVar (0)
mov w_ptr [elen], di ; Save Len EndOfAllVar
xor di, di ; DI = Ofs 0
@@init_date_char:
mov al,'$' ; AL = Char '$'
mov si, ofs @set ; BX = Ofs Comp Set Date/Time
mov cx, w_ptr [elen] ; CX = Len EndOfAllVar
sub cx, di ; CX = Len Rest Var
@@find_date_char:
repne scasb ; Find Char '$'
jcxz short @@test_delete ; Wenn EndOfAllVar Goto
@@init_date_str:
mov dl, 9 ; DL = Zähler Date-Var
dec di ; DI = Ofs 0 Env-Var
mov w_ptr [envp], di ; Save Ofs 0 Env-Var
@@find_date_str:
dec dl ; DL = Zähler - 1
js short @@init_date_char ; Wenn Zähler < 0 Goto
mov di, w_ptr [envp] ; DI = Ofs Next-Var 0
cmpsd ; Test Date-Var
jne short @@find_date_str ; Wenn nein Goto
@@find_date_eos:
xor ax, ax ; AX = EndOfVar (0)
mov di, w_ptr [envp] ; DI = Ofs Next-Var 0
mov cx, w_ptr [elen] ; CX = Len EndOfAllVar
sub cx, di ; CX = Len Rest Env
mov dx, cx ; DX = Len Rest Env
repne scasb ; Find EndOfVar (0)
@@del_date_str:
push ds ; Save
mov bx, es ; DX = Seg Env
mov ds, bx ; DS = Seg Env
mov si, di ; SI = Ofs Next-Var 0
mov di, w_ptr [envp] ; DI = Ofs Date-Var 0
sub dx, cx ; DX = Len Rest Env - Len Var
sub w_ptr [elen], dx ; Save Len Rest Env
shr cx, 1 ; CX = Len Word
rep movsw ; Kopieren Word
adc cx, 0 ; CX = Len Byte
rep movsb ; Kopieren Byte
mov di, w_ptr [envp] ; DI = Ofs Next-Var 0
pop ds ; Load
jmp short @@init_date_char ; Goto
@@test_delete:
mov ax, w_ptr ds:[PSP_CMD+1] ; AX = Cmdline Parameter
and ah, 5Fh ; AH = Char Upper
cmp ax, 'D ' ; Test ' D'
je short @@send_msg0 ; Wenn ja Goto
@@test_env_size:
dec di ; DI = Ofs New-Date-Var 0
mov ax, di ; AX = Len EndOfAllVar
add ax, @Date_Size ; AX = Len Date-Var
cmp ax, w_ptr [size] ; Test Len EndOfAllVar < Len Env
jb short @@copy_date ; Wenn ja Goto
@@send_msg2:
mov ah, 09h ; AH = Funktion Ausgabe
mov dx, ofs @msg2 ; DS:DX = Adresse Msg
int 21h ; Meldung ausgeben
@@terminate_exit1:
mov ax, 4C01h ; AX = Func Prog Terminate Exit 1
int 21h ; Prog beenden
@@copy_date:
Push es di ; Adresse New Date/Time-Var
call __SETDATE@ ; Set Date/Time
@@send_msg0:
mov ah, 09h ; AH = Funktion Ausgabe
mov dx, ofs @msg0 ; DS:DX = Adresse Msg
int 21h ; Meldung ausgeben
@@terminate_exit0:
mov ax, 4C00h ; AX = Func Prog Terminate Exit 0
int 21h ; Prog beenden
EndSym@ __SETENV, < ENDP >
; **************************************************************************
; * Funktion: SETDATE - Set Date/Time-Variablen im Master-Environ *
; * *
; * Eingabe: ARG - Adresse Master-Environ *
; * *
; * Ausgabe: Date/Time Variablen im Environ setzen *
; **************************************************************************
LocSym@ __SETDATE, < PROC PASCAL NEAR >
ARG dest:DWORD
@@get_date:
mov ah, 2Ah ; Func 2Ah Date
int 21h ; Get Date
@@init_week_day:
movzx bx, al ; BX = Wochentag Zahl
shl bl, 1 ; BX = Ofs Wochentag
mov ax, w_ptr [bx.@weekD] ; AX = Wochentag String
mov w_ptr [@dw], ax ; Save Wochentag
@@init_day:
mov al, dl ; AL = TT Zahl
push ofs @d1 ofs @dd ; Push Arg
call @@conv_and_save ; Save TT Ascii-Zahl
@@init_month:
mov al, dh ; AL = MM Zahl
push ofs @d2 ofs @dm ; Push Arg
call @@conv_and_save ; Save MM Ascii-Zahl
@@init_year:
xor dx, dx ; DX = 0
mov ax, 100 ; AX = 100
xchg ax, cx ; AX = JJJJ Zahl, CX 100
div cx ; AL = JJ.. Zahl > 100
push ofs @d3 ofs @dy ; Push Arg
call @@conv_and_save ; Save JJ.. Ascii-Zahl
mov al, dl ; AL = ..JJ Zahl < 100
push ofs @d3+2 ofs @dy+2 ; Push Arg
call @@conv_and_save ; Save ..JJ Ascii-Zahl
@@get_time:
mov ah, 2Ch ; Func 2Ch Time
int 21h ; Get Time
@@init_secounds:
mov al, dh ; AL = SS Zahl
push ofs @t3 ofs @ts ; Push Arg
call @@conv_and_save ; Save SS Ascii-Zahl
@@init_minits:
mov al, cl ; AL = MM Zahl
push ofs @t2 ofs @tm ; Push Arg
call @@conv_and_save ; Save MM Ascii-Zahl
@@init_hourers:
mov al, ch ; AL = HH Zahl
push ofs @t1 ofs @th ; Push Arg
call @@conv_and_save ; Save HH Ascii-Zahl
@@copy_cmd:
cld ; Flag Vorwärts
les di, d_ptr [dest] ; ES:DI = Adresse Env
mov si, ofs @date ; SI = Ofs Date/Time-Var
mov cx, @Date_Size ; CX = Len Date/Time-Var
shr cx, 1 ; CX = Len Word
rep movsw ; Kopieren Word
adc cx, 0 ; CX = Len Byte
rep movsb ; Kopieren Byte
@@ende:
ret
; **************************************************************************
; * Teil-Funktion: Zahlen in das Ascii-Format konvertieren und in die *
; * entsprechenden Variablen speichern. *
; * *
; * Eingabe: ARG - AL = Zahl *
; * - Arg1 = Offset Variable 1 *
; * - Arg2 = Offset Variable 2 *
; * *
; * Ausgabe: Werte in Variablen speichern *
; **************************************************************************
OFS1 EQU 6 ; Stack-Ofs Argument 1
OFS2 EQU 4 ; Stack-Ofs Argument 2
@@conv_and_save:
push bp ; Sichern
mov bp, sp ; BP = SP
aam ; AH = Zahl > 9, AL = Zahl < 10
xchg al, ah ; AX = Umkehren
add ax, 3030h ; AX = Ascii-Zahl
mov bx, w_ptr [bp+OFS1] ; BX = Ofs 1
mov w_ptr [bx], ax ; Save Ascii-Zahl
mov bx, w_ptr [bp+OFS2] ; BX = Ofs 2
mov w_ptr [bx], ax ; Save Ascii-Zahl
pop bp ; Restaurieren
ret 4 ; Return
EndSym@ __SETDATE, < ENDP >
@Stack_Begin:
_CLOSE_COM_SEG
Gruß Dieter
[edit] INIT-Proc geändert [/edit]
[edit] Auf Wunsch von "dumdideldum" ein Include-Geschnipsel mit den notwendigen Definitionen zum assemblieren [/edit]
;TASM.CFG = -c -r -ml -t -q -zi -iC:\bc\rtl\inc -iC:\bc\blc\inc
;TLINK.CFG = -3 -A=16 -c -C -d -n -m -P -v -LC:\bc\rtl
; Syntax TASM: tasm datetime
; Syntax TLINK: tlink /Tdc datetime Warnmeldung Debug-Info ignorieren
LOCALS
LocSym@ MACRO Name, Type, Dummy
Name Type
Name&@ EQU Name
ENDM
EndSym@ MACRO Name:Rest
ENDP
ENDM
$BE EQU 07h ; Bell
$BS EQU 08h ; Backspace
$HT EQU 09h ; Horizontal-Tab
$LF EQU 0Ah ; Zeilenvorschub
$VT EQU 0Bh ; Vertikal-Tab
$CR EQU 0Dh ; Zeilenanfang
$NL EQU 0Ah, 0Dh ; $LF, $CR
ofs EQU offset
b_ptr EQU byte ptr
t_ptr EQU tbyte ptr
w_ptr EQU word ptr
d_ptr EQU dword ptr
f_ptr EQU fword ptr
p_ptr EQU pword ptr
q_ptr EQU qword ptr
__USE32__ = 0
_OPEN_COM_SEG MACRO
IF __USE32__
P486
ENDIF
_TEXT SEGMENT BYTE 'CODE'
ENDS
IFE __USE32__
P486
ENDIF
ASSUME CS:_TEXT, DS:_TEXT, ES:_TEXT, SS:_TEXT
_TEXT SEGMENT
org 100h
Programm_Code:
ENDM
_CLOSE_COM_SEG MACRO
_TEXT ENDS
END Programm_Code
ENDM
Nicht schlecht, sollte übrigens bis DOS 8.0 (ME) laufen.
Welchen Assembler/Linker hast du verwendet?
Hochladen könntest du über einen Freehoster und dann nur den Link posten.
Welchen Assembler/Linker hast du verwendet?
Hochladen könntest du über einen Freehoster und dann nur den Link posten.
Hallo dumdideldum!
Den uralten TASM 3.1 von Borland. Habe seit über 10 Jahren nix mehr mit Assembler gemacht. Das hatte mich aber interessiert und habe daher eine alte Borland-CD ausgegraben und auf meine seperate Win98-Dos-Partition installiert.
Wichtig ist nur, dass der Assembler 32 Bit-Codes, also ab 386er Befehlssatz assemblieren kann. Der Code enthält aber Makro-Defs, die in einer externen DEFS.ASI definiert sind.
Kannst Du mir das mit dem Freehoster bitte etwas genauer erklären
Gruß Dieter
Den uralten TASM 3.1 von Borland. Habe seit über 10 Jahren nix mehr mit Assembler gemacht. Das hatte mich aber interessiert und habe daher eine alte Borland-CD ausgegraben und auf meine seperate Win98-Dos-Partition installiert.
Wichtig ist nur, dass der Assembler 32 Bit-Codes, also ab 386er Befehlssatz assemblieren kann. Der Code enthält aber Makro-Defs, die in einer externen DEFS.ASI definiert sind.
Kannst Du mir das mit dem Freehoster bitte etwas genauer erklären
Gruß Dieter
Hallo, didi1954,
den habe ich ja auch noch.
Gruß
dumdideldum
.
den habe ich ja auch noch.
Gruß
dumdideldum
.
Nach PM-Kontakt mit didi1954 habe ich die Datei mal hochgeladen auf einen selten und just for fun genutzen Account, sie bleibt ca. 1/2 Jahr dort zur Verfügung.
Die http://zackzick.za.funpic.de/div/datetime.zip ist 702 Byte groß und enthält die von Dieter oben gepostete .com-Datei mit 666 Byte.
Damit hat sich das mit dem Freehoster wohl erledigt. ;)
Ausprobiert wurde hier die einwandfreie Funktion unter Win98SE (DOS 7.1) und Windows ME (DOS 8.0)
Die http://zackzick.za.funpic.de/div/datetime.zip ist 702 Byte groß und enthält die von Dieter oben gepostete .com-Datei mit 666 Byte.
Damit hat sich das mit dem Freehoster wohl erledigt. ;)
Ausprobiert wurde hier die einwandfreie Funktion unter Win98SE (DOS 7.1) und Windows ME (DOS 8.0)
Hallo dumdideldum!
Perfekt, .danke!
Noch ein Hinweis: Beim debuggen ist an Offset 16h (PSP_COM) nicht das Command-PSP-Segment zu sehen. Das funktioniert nur ohne Debugger.
Gruß Dieter
Perfekt, .danke!
Noch ein Hinweis: Beim debuggen ist an Offset 16h (PSP_COM) nicht das Command-PSP-Segment zu sehen. Das funktioniert nur ohne Debugger.
Gruß Dieter