[syslinux:master] ver.com: Update to pull info from DRMK
syslinux-bot for Gene Cumm
gene.cumm at gmail.com
Sun Nov 14 12:55:12 PST 2010
Commit-ID: 884ec3649c85b1959826a5427fa23bd7a6def598
Gitweb: http://syslinux.zytor.com/commit/884ec3649c85b1959826a5427fa23bd7a6def598
Author: Gene Cumm <gene.cumm at gmail.com>
AuthorDate: Sun, 24 Oct 2010 17:30:30 -0400
Committer: Gene Cumm <gene.cumm at gmail.com>
CommitDate: Sun, 24 Oct 2010 17:30:30 -0400
ver.com: Update to pull info from DRMK
---
modules/ver.asm | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 116 insertions(+), 5 deletions(-)
diff --git a/modules/ver.asm b/modules/ver.asm
index 82e8064..00b349b 100644
--- a/modules/ver.asm
+++ b/modules/ver.asm
@@ -2,9 +2,10 @@
;
; ver.asm
;
-; A COMBOOT/DOS COM program to display the version of the system (Syslinux or DOS)
+; A COMBOOT/DOS COM program to display the version of the system
+; (Syslinux, DOS, or DRMK)
;
-; Copyright (C) 2009 Gene Cumm
+; Copyright (C) 2009-2010 Gene Cumm
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
@@ -167,6 +168,8 @@ chkprn_dosver:
je .var_msdos
cmp bh,0FDh
je .var_freedos
+ cmp bh,0DEh
+ je .var_drmk
jmp .var_unk
.var_pcdos:
mov si,pcdos_str
@@ -180,6 +183,10 @@ chkprn_dosver:
mov si,freedos_str
call writestr
jmp .var_end
+.var_drmk:
+ mov si,drmk_str
+ call writestr
+ jmp .var_end
.var_unk:
mov si,unkdos_str
call writestr
@@ -200,7 +207,13 @@ chkprn_dosver:
pop edx
pop eax
cmp bh,0FFh
+ je .msdos_ver
+ cmp bh,0DEh
jne .end_ver
+.drmk_ver:
+ call getprn_drmkver
+ jmp .end_ver
+.msdos_ver:
cmp al,5
jb .end_ver
call getprn_msdosver
@@ -226,8 +239,8 @@ prn_dosver_num:
call writechr_dl
.vmin_prn:
mov al,ah
- call writedecb
-; call writehex2
+; call writedecb
+ call writehex2
.serial:
mov si,spparen_str
call writestr
@@ -297,6 +310,99 @@ getprn_msdosver:
popad
ret
+; getdrmkver: Get the DRMK-specifc OS version
+; Returns Version
+; AX OS Version
+; DX Patch Version
+getdrmkver:
+ mov dx,0
+ mov ax,4452h
+ int 21h
+ ret
+
+; getdrmkver: Get the DRMK-specifc Kernel build info
+getdrmkbld:
+ mov bx,0
+ mov ax,4458h
+ int 21h
+ ret
+
+; getprn_drmkver: Get/Print DRMK-specific Version info
+getprn_drmkver:
+ pushad
+ pushfd
+.getver:
+ call getdrmkver
+.prnosver: ; "OS Version"
+ mov si,osver_str
+ call writestr
+ mov si,zerox_str
+ call writestr
+ call writehex4
+ call crlf
+.prnpatchver: ; "Patch Version"
+ mov si,patchver_str
+ call writestr
+ mov si,zerox_str
+ call writestr
+ mov dx,ax
+ call writehex4
+ call crlf
+.getbld:
+ call getdrmkbld
+.prnkernbld: ; "Kernel Build Date"
+ mov si,kernbld_str
+ call writestr
+ call writedate_ax
+ call crlf
+.end:
+ popfd
+ popad
+ ret
+
+;writedate_ax Write a date in AX in ? format
+; Input
+; AX Date in 16-bit DOS format
+writedate_ax:
+ pushad
+ pushfd
+ mov dx,ax
+.year:
+ shr ax,9
+ add ax,1980
+ call writedecw
+ mov al,'-'
+ call writechr
+ mov ax,dx
+.month:
+ shr ax,9
+ and ax,0Fh
+ cmp ax,10
+ jae .month_wri
+ mov cx,ax
+ mov ax,'0'
+ call writechr
+ mov ax,cx
+.month_wri:
+ call writedecw
+ mov al,'-'
+ call writechr
+ mov ax,dx
+.day:
+ and ax,1Fh
+ cmp ax,10
+ jae .day_wri
+ mov cx,ax
+ mov ax,'0'
+ call writechr
+ mov ax,cx
+.day_wri:
+ call writedecw
+.end:
+ popfd
+ popad
+ ret
+
; writechr_dl Write a character to the console saving AX
; Input
; DL character to write
@@ -386,9 +492,10 @@ is_zf:
%include "../core/writedec.inc" ; Decimal output
section .data
-info_str db 'Ver.com b010', CR, LF, 0
+info_str db 'Ver.com b016', CR, LF, 0
is_dos_str db 'Found DOS', CR, LF, 0
is_sysl_str db 'Found a Syslinux variant', CR, LF, 0
+is_drmk_str db 'Found DRMK', CR, LF, 0
may_sysl_str db 'Maybe Syslinux variant', CR, LF, 0
gotver_str db 'Got the version back', CR, LF, 0
prn_ver_str db 'Printing version number', CR, LF, 0
@@ -401,7 +508,11 @@ pcdos_str db 'PC-DOS ', 0
msdos_str db 'MS-DOS ', 0
freedos_str db 'FreeDOS ', 0
unkdos_str db 'Unknown-DOS ', 0
+drmk_str db 'DRMK ', 0
dosext_str db ' Extended DOS version: ', 0
+osver_str db ' OS Version: ', 0
+patchver_str db ' Patch Version: ', 0
+kernbld_str db ' Kernel Build Date: ', 0
spparen_str db ' (', 0
zerox_str db '0x', 0
parensp_str db ') ', 0
More information about the Syslinux-commits
mailing list