ccmmooss -- Device Driver

Device for reading CMOS

The file /ddeevv/ccmmooss the entry via which you can read your system's CMOS.  It
is  a part  of the  driver mmeemm,  which manages memory;  thus, it  has major
number 0 and minor number 3.

The CMOS is a special, non-volatile area of random-access memory (RAM) that
holds information  about your system's configuration.   The following gives
the common meanings assigned to  the various byte positions within the CMOS
area:

_R_e_a_l-_t_i_m_e _c_l_o_c_k:
     00xx0000           Seconds
     00xx0011           Alarm, seconds
     00xx0022           Minutes
     00xx0033           Alarm, minutes
     00xx0044           Hours
     00xx0055           Alarm, hours
     00xx0066           Day of the week
     00xx0077           Day of the month
     00xx0088           Month
     00xx0099           Year
     00xx00AA           Update in progress

_D_i_a_g_n_o_s_t_i_c _p_o_w_e_r _b_y_t_e:
     00xx00EE           Bit 7 -- Chip lost power
                    Bit 6 -- Bad checksum
                    Bit 5 -- Bad configuration byte
                    Bit 4 -- Bad memory size
                    Bit 3 -- Bad hard-disk byte
                    Bit 2 -- Bad time of day


_R_e_s_t_a_r_t-_s_t_a_t_u_s _b_y_t_e:
     00xx00FF           Reloaded when restarting, e.g., returning from
                    protected mode

_F_l_o_p_p_y-_d_i_s_k _d_r_i_v_e, _d_r_i_v_e_s _A _a_n_d _B:
     00xx1100           Bits 7-4 -- Drive A:
                            0 = no drive
                            1 = 360-kilobyte drive
                            2 = 1.2-megabyte drive
                            3 = 720-kilobyte drive
                            4 = 1.44-megabyte drive
                    Bits 3-0 -- Drive B:
                            0 = no drive
                            1 = 360-kilobyte drive
                            2 = 1.2-megabyte drive
                            3 = 720-kilobyte drive
                            4 = 1.44-megabyte drive

_F_l_o_p_p_y-_d_i_s_k _d_r_i_v_e, _d_r_i_v_e_s _C _a_n_d _D:
     00xx1111           Bits 7-4 -- Drive C:
                            0 = no drive
                            1 = 360-kilobyte drive
                            2 = 1.2-megabyte drive
                            3 = 720-kilobyte drive
                            4 = 1.44-megabyte drive
                    Bits 3-0 -- Drive D:
                            0 = no drive
                            1 = 360-kilobyte drive
                            2 = 1.2-megabyte drive
                            3 = 720-kilobyte drive
                            4 = 1.44-megabyte drive

_H_a_r_d-_d_i_s_k _d_r_i_v_e:
     00xx1122           Bits 7-4 -- First hard-disk drive
                            0 = No drive
                            1-3 = Type 1-15
                            F = Use contents of byte 19
                    Bits 3-0 -- Second hard-disk drive
                            0 = No drive
                            1-3 = Type 1-15
                            F = Use contents of byte 1A

_C_o_n_f_i_g_u_r_a_t_i_o_n _o_f _e_q_u_i_p_m_e_n_t:
     00xx001144          Bits 7-6 -- Floppy disks
                            00 = one floppy-disk drive
                            01 = two floppy-disk drives
                            10 = three floppy-disk drives
                            11 = four floppy-disk drives
                    Bits 5-4 -- Type of display
                            00 = EGA/VGA
                            01 = CGA 40x25
                            10 = CGA 80x25
                            11 = monochrome display
                    Bit 1 -- floating-point coprocessor installed
                    Bit 0 -- Floppy-disk drive present

_M_e_m_o_r_y:
     00xx1155-00xx1166      Amount of memory below one megabyte
     00xx1177-00xx1188      Amount of memory above one megabyte

_T_y_p_e _o_f _h_a_r_d _d_i_s_k:
     00xx1199           Type of first hard disk.  Read only when
                    bits 7-4 of byte 0x12 equal 0xF.
     00xx2211           Type of second hard disk.  Read only when
                    bits 3-0 of byte 0x12 equal 0xF.

_M_i_s_c_e_l_l_a_n_e_o_u_s:
     00xx22EE-00xx22FF      Checksum for bytes 0x10 through 0x2D
     00xx3300-00xx3311      Indicate memory size above one megabyte
     00xx3322           Century byte (BCD)
     00xx3333           Flag for power-on information:
                    Bit 7 -- Top 128 kilobytes of RAM is installed
                            (shadow RAM is available)
                    Bit 6 -- First boot after running set-up routine

/ddeevv/ccmmooss limits  access to a 256-byte  data area.  Any attempt  to read or
write beyond this limit will fail.

_S_e_e _A_l_s_o
cclloocckk, ddeevviiccee ddrriivveerrss, RRAAMM

_N_o_t_e_s
If  you want  to read  or  set the  real time  clock, then  you  should use
/ddeevv/cclloocckk instead of /ddeevv/ccmmooss.

Vendor-specific information,  e.g., your system's  memory configuration, is
often kept  in the  CMOS area at  locations beyond those  documented above.
Therefore, writing  to undocumented regions  of the CMOS  area is extremely
unwise:  your  computer  could subsequently  refuse  to  boot up  properly.
_C_a_v_e_a_t _u_t_i_l_i_t_o_r.
