Introduction

Language Structure

IB Statements

File System

Comet 32 Runtime

Index

Get DOS Time

Syntax: DOSMS(AX-value,BX-value,CX-value,DX-value) EXCP=statement-label
Entry:
  AX-value = "@2C00@"
  BX-value = "@0000@"
  CX-value = "@0000@"
  DX-value = "@0000@"
Return:
  Byte 2 of the CX register (i.e., the CH byte) contains the hour
  (0 to 23; in hex).

  Byte 1 of the CX register (i.e., the CL byte) contains the minute
  (0 to 59; in hex).

  Byte 2 of the DX register (i.e., the DH byte) contains the second
  (0 to 59; in hex).

  Byte 1 of the DX register (i.e., the DL byte) contains the
  hundredths of seconds (0 to 99; in hex).
Discussion: The DOSMS function call can be used to get the DOS system time. This function requires that the AX-value be set to "@2C00@", and that the other entry values be set to null.

After the function is executed, the DOS time is returned in the registers as described above. Note that the values are returned in hex and must be converted to decimal for meaningful use.

Example:
  ! S STIME,DSK
  ! O TIME,DSK
  ! L T00,E
  ! R QMONITOR
  !
  !==========  GET DOS TIME =======================================
  !
  LENGTH 2 & LOCAL AX$,BX$,CX$,DX$        ! Define registers
             LOCAL HOUR$,MIN$,SEC$,HUND$  ! Define time variables
  LENGTH 1 & LOCAL CH$,CL$,DH$,DL$        ! Define sub-registers
  LENGTH 2.0 & LOCAL HOUR,MIN,SEC,HUND    ! Define numeric times
  !
  100 FORMAT (ET)                         ! Screen format
  !
  CLEAR                        ! Initialize all variables
  !
  AX$="@2C00@"                 ! Set AX register for "GET TIME"
  BX$="@0000@"                 ! Set BX register to null
  CX$="@0000@"                 ! Set CX register to null
  DX$="@0000@"                 ! Set DX register to null
  !
  DOSMS(AX$,BX$,CX$,DX$)       ! Perform DOSMS system call
  !
  HOUR$ = SUB(CX$,2,1)         ! Hour (hex) = CH byte of CX
  MIN$  = SUB(CX$,1,1)         ! Minute (hex) = CL byte of CX
  SEC$  = SUB(DX$,2,1)         ! Second (HEX) = DH byte of DX
  HUND$ = SUB(DX$,1,1)         ! Hundredths (hex) = DL byte of DX
  !
  HOUR$ = "@00@" + HOUR$       ! Addleading null byte to HOUR$
  MIN$  = "@00@" + MIN$        ! Add leading null byte to MIN$
  SEC$  = "@00@" + SEC$        ! Add leading null byte to SEC$
  HUND$ = "@00@" + HUND$       ! Add leading null byte to HUND$
  !
  HOUR = HEXDEC(HOUR$)         ! Convert hex HOUR$ to decimal HOUR
  MIN  = HEXDEC(MIN$)          ! Convert hex MIN$ to decimal MIN
  SEC  = HEXDEC(SEC$)          ! Convert hex SEC$ to decimal SEC
  HUND = HEXDEC(HUND$)         ! Convert hex HUND$ to decimal HUND$
  !
  PRINT (0,100)                ! Set typewriter mode
  !
  PRINT (0) "HOUR:      ";HOUR
  PRINT (0) "MINUTE:    ";MIN
  PRINT (0) "SECONDS:   ";SEC
  PRINT (0) "HUNDREDTHS:";HUND
  INPUT (0) ""
  RUN "QMONITOR"
  END