; datefile.asm

; date and time functions and save to file using dos interrupts. 

; this program prints the date and saves it to file when running from emu8086 the path is: 
; c:\emu8086\vdrive\c\date.txt 
; when running from dos prompt the path is: 
; c:\date.txt 

name "date"

org 100h

mov ah,2ah                  ; get date  
int 21h
add al,30h
mov  week,al                ; 0=sunday  
add cx,0f830h               ; for years  
mov ax,cx
call deci
mov w. year,ax
mov al,dh                   ; month  
call deci
mov w. mont,ax
mov al,dl                   ; day  
call deci
mov w. day,ax


mov ah,2ch                  ; get time  
int 21h
mov al,ch                   ; hour  
call deci
mov w. hour,ax
mov al,cl                   ; minute  
call deci
mov w. minu,ax
mov al,dh                   ; second  
call deci
mov w. seco,ax
mov al,dl                   ; milisecond  
call deci
mov w. cent,ax


mov ah,09
mov dx,offset txt
int 21h


mov cx, 0         ; file attribute 
mov ax,3c00h      ; create new file  
mov dx, offset fildat
int 21h
jb error         ; error 

mov w. handle, ax

mov ax,4200h
mov bx, w. handle
xor cx,cx              ; begin byte 0  
mov dx,0001            ; 1st byte modified is the second  
int 21h
jb error

mov ah,40h             ; write file  
mov bx, w. handle
mov cx, 22             ; write 22 bytes  
mov dx,offset week
int 21h
jb error


mov ah,3eh             ; close  
mov bx, w. handle
int 21h



; wait for any key press: 
mov ah, 0
int 16h

error:                 ; leave program (unconditionally). 

int 20h


deci:                  ; calculate in decimal  
push cx
xor ah,ah
mov cl,10
div cl
add ax,3030h
pop cx
ret


fildat db "c:\date.txt",0        ; save date ant time  
handle db 0,0


; here's data to display the date and time  


txt db 0Dh,0Ah,0Ah,9,9          ; jump line and go two tabs right  
week db 0,9                     ; put the day 1=monday   9 jump a colon (tab) 
day db 0,0,'-'
mont db 0,0,'-'
year db 0,0,9


hour db 0,0,':'
minu db 0,0,9
seco db 0,0,'.'
cent db 0,0,0Dh,0Ah,'$'         ; line feed   return   and  stop symbol (dollar).  



; - other assembly language source codes -



; - asm2html by emu8086 -