]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MAPPER/SET_TOD.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / MAPPER / SET_TOD.ASM
1 ;
2 page 80,132
3 ;
4 title CP/DOS DosSetDateTime mapper
5 ;
6 dosxxx 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
29 error_ts_datetime equ 0002h
30
31 str struc
32 old_bp dw ?
33 return dd ?
34 Data dd ? ; TOD data pointer
35 str ends
36
37 dossetdatetime 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
65 error: mov ax,error_ts_datetime ; set error code
66 jmp short exit1
67
68 exit: sub ax,ax ; set good return code
69 exit1: Mexit ; pop registers
70 ret size str - 6 ; return
71
72 dossetdatetime endp
73
74 dosxxx ends
75
76 end