Subversion Repositories SvarDOS

Rev

Rev 1822 | Rev 1843 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1822 Rev 1842
Line 28... Line 28...
28
 
28
 
29
 
29
 
30
static enum cmd_result cmd_ver(struct cmd_funcparam *p) {
30
static enum cmd_result cmd_ver(struct cmd_funcparam *p) {
31
  char *buff = p->BUFFER;
31
  char *buff = p->BUFFER;
32
  unsigned char maj = 0, min = 0, retcode = 0, truemaj = 0, truemin = 0, rev = 0, verflags = 0;
32
  unsigned char maj = 0, min = 0, retcode = 0, truemaj = 0, truemin = 0, rev = 0, verflags = 0;
-
 
33
  unsigned short drdosver = 0;
-
 
34
  unsigned short doscrelstrseg = 0, doscrelstroff = 0;
33
 
35
 
34
  /* help screen */
36
  /* help screen */
35
  if (cmd_ishlp(p)) {
37
  if (cmd_ishlp(p)) {
36
    nls_outputnl(20,0); /* "Displays the DOS kernel and SvarCOM shell versions." */
38
    nls_outputnl(20,0); /* "Displays the DOS kernel and SvarCOM shell versions." */
37
    outputnl("");
39
    outputnl("");
Line 119... Line 121...
119
    mov [truemaj], bl  /* BL=maj_ver_num  BH=min_ver_num */
121
    mov [truemaj], bl  /* BL=maj_ver_num  BH=min_ver_num */
120
    mov [truemin], bh
122
    mov [truemin], bh
121
    mov [rev], dl      /* DL=revision  DH=kernel_memory_area */
123
    mov [rev], dl      /* DL=revision  DH=kernel_memory_area */
122
    mov [verflags], dh
124
    mov [verflags], dh
123
 
125
 
-
 
126
    /* get the DR-DOS specific version through INT 21h,4452h */
-
 
127
    mov ax, 0x4452
-
 
128
    int 0x21
-
 
129
    jc NOTDRDOS
-
 
130
    mov drdosver, ax
-
 
131
    NOTDRDOS:
-
 
132
 
-
 
133
    /* get a pointer to the DOS-C style "os_release" via INT 21h,33FFh */
-
 
134
    mov ax, 0x33ff
-
 
135
    xor dx, dx
-
 
136
    int 0x21
-
 
137
    jc NOTDOSC
-
 
138
    mov doscrelstrseg, dx
-
 
139
    mov doscrelstroff, ax
-
 
140
    NOTDOSC:
-
 
141
 
124
    pop dx
142
    pop dx
125
    pop cx
143
    pop cx
126
    pop bx
144
    pop bx
127
    pop ax
145
    pop ax
128
  }
146
  }
129
 
147
 
-
 
148
  /* look for a DOS-C os_release (FreeDOS, EDR-DOS, RX-DOS...)
-
 
149
   * https://github.com/SvarDOS/edrdos/issues/77 */
-
 
150
  if (doscrelstrseg != 0) {
-
 
151
    char far *osrel = MK_FP(doscrelstrseg, doscrelstroff);
-
 
152
    unsigned short i;
-
 
153
    for (i = 0; osrel[i] != 0; i++) {
-
 
154
      buff[i] = osrel[i];
-
 
155
    }
-
 
156
    buff[i] = 0;
-
 
157
    outputnl(buff);
-
 
158
  }
-
 
159
 
-
 
160
  if (drdosver != 0) {
-
 
161
    sprintf(buff, "DR-DOS kernel version %04X", drdosver);
-
 
162
    outputnl(buff);
-
 
163
  }
-
 
164
 
130
  sprintf(buff, svarlang_str(20,1), maj, min); /* "DOS kernel version %u.%u" */
165
  sprintf(buff, svarlang_str(20,1), maj, min); /* "DOS kernel version %u.%u" */
131
  output(buff);
166
  output(buff);
132
 
167
 
133
  /* can we trust in the data returned? */
168
  /* can we trust in the data returned? */
134
  /* DR DOS 5&6 return 0x01, MS-DOS 2-4 return 0xff */
169
  /* DR DOS 5&6 return 0x01, MS-DOS 2-4 return 0xff */