summaryrefslogtreecommitdiff
path: root/v4.0/src/MAPPER/SET_TOD.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/MAPPER/SET_TOD.ASM')
-rw-r--r--v4.0/src/MAPPER/SET_TOD.ASM76
1 files changed, 76 insertions, 0 deletions
diff --git a/v4.0/src/MAPPER/SET_TOD.ASM b/v4.0/src/MAPPER/SET_TOD.ASM
new file mode 100644
index 0000000..2cc058b
--- /dev/null
+++ b/v4.0/src/MAPPER/SET_TOD.ASM
@@ -0,0 +1,76 @@
1;
2page 80,132
3;
4title CP/DOS DosSetDateTime mapper
5;
6dosxxx segment byte public 'dos'
7 assume cs:dosxxx,ds:nothing,es:nothing,ss:nothing
8;
9;**********************************************************************
10;*
11;* MODULE: dossetdatetime
12;*
13;* FILE NAME: dos050.asm
14;*
15;* CALLING SEQUENCE:
16;*
17;* push@ struc date/time
18;* call dossetdatetime
19;*
20;* MODULES CALLED: PC-DOS Int 21h, ah=2bh, set date
21;* ah=2dh, set time
22;*
23;*********************************************************************
24
25 public dossetdatetime
26 .sall
27 include macros.inc
28
29error_ts_datetime equ 0002h
30
31str struc
32old_bp dw ?
33return dd ?
34Data dd ? ; TOD data pointer
35str ends
36
37dossetdatetime proc far
38 Enter dossetdatetime ; push registers
39
40 lds si,[bp].data ; set TOD data pointer and load
41 ; info into registers
42 mov ch,byte ptr [si] ; load hour
43 mov cl,byte ptr [si]+1 ; minutes
44 mov dh,byte ptr [si]+2 ; seconds
45 mov dl,byte ptr [si]+3 ; hundredths
46
47 mov ah,2dh ; set time opcode
48 int 21h ; set new time
49 push ax ; check for error later
50
51 mov dl,byte ptr [si]+4 ; load day
52 mov dh,byte ptr [si]+5 ; month
53 mov cx,word ptr [si]+6 ; year
54
55 mov ah,2bh ; new date opcode
56 int 21h ; set new date
57
58 pop bx
59 mov cl,0
60 cmp bl,cl ; return code from time set
61 jnz error
62 cmp al,0 ; return code from date set
63 jz exit
64
65error: mov ax,error_ts_datetime ; set error code
66 jmp short exit1
67
68exit: sub ax,ax ; set good return code
69exit1: Mexit ; pop registers
70 ret size str - 6 ; return
71
72dossetdatetime endp
73
74dosxxx ends
75
76 end