;***************************************************************************;
;                                                                           ;
;                                   CLOCK                                   ;
;                        time-of-day display program                        ;
;                                                                           ;
;                         Author: David F. Pallmann                         ;
;                                                                           ;
;***************************************************************************;
;
;
; File uses universal (.UNV) files other
; than SYS, SYSSYM, and TRM.
; These are on the AMUS network
;
; Updated by Dave Heyliger - AMUS Staff (dkh) to allow ESC exit.
;

OBJNAM  CLOCK.LIT

VMAJOR=1

VEDIT=100.                              ;22-Dec-83 DFP creation
VEDIT=101.                              ;15-Feb-88 dkh

;universals
SEARCH  SYS
SEARCH  SYSSYM
SEARCH  AAA                             ;dkh - DSK2:[100,133]
SEARCH  TRM
SEARCH  MACLIB

ILOOP=D0
ROW=D2
COL=D3
OLOOP=D4
IMP=A5

OFINI
OFDEF   OLDDAT,4                        ;old system date
OFDEF   NEWDAT,4                        ;new system date
OFSIZ   IMPSIZ

START:  PHDR    -2,0,PH$REE!PH$REU      ;program header
       GETIMP  IMPSIZ,IMP              ;allocate impure area
       ONEKEY                          ;dkh - sets one key input

BCKGND: CRT     #0                      ;clear screen
       CRT     #29.
       CRT     #3,#38.
       TYPE    ....
       CRT     #4,#38.
       TYPE    ....
       CRT     #7,#38.
       TYPE    ....
       CRT     #8.,#38.
       TYPE    ....

CHKTIM: CTRLC   EXIT
       SLEEP   #10000
       TCKI                                    ;dkh - input???
       BNE     10$                             ;dkh - nope
       KBD                                     ;dkh - yes, get the keystroke
       CMPB    D1,#33                          ;dkh - escape?
       JEQ     EXIT                            ;dkh - yes, exit
10$:    GTIMES  NEWDAT(IMP)
       CMMW    OLDDAT(IMP),NEWDAT(IMP)
       BEQ     CHKTIM

NEWTIM: MOV     NEWDAT(IMP),OLDDAT(IMP)

HRS1:   CLR     D1
       MOVB    NEWDAT(IMP),D1
       DIV     D1,#10.
       AND     #377,D1
       MOV     #7,COL
       CALL    DIGIT

HRS2:   CLR     D1
       MOVB    NEWDAT(IMP),D1
10$:    CMPB    D1,#10.
       BLT     20$
       SUB     #10.,D1
       BR      10$
20$:    MOV     #22.,COL
       CALL    DIGIT

MIN1:   CLR     D1
       MOVB    NEWDAT+1(IMP),D1
       DIV     D1,#10.
       AND     #377,D1
       MOV     #46.,COL
       CALL    DIGIT

MIN2:   CLR     D1
       MOVB    NEWDAT+1(IMP),D1
       AND     #377,D1
10$:    CMPB    D1,#10.
       BLT     20$
       SUB     #10.,D1
       BR      10$
20$:    MOV     #61.,COL
       CALL    DIGIT

       JMP     CHKTIM

DIGIT:  MUL     D1,#15.
       MOV     D1,D5
       LEA     A0,DIGTBL
       ADD     D1,A0
       MOV     #1,ROW
       MOV     #5,OLOOP

DOROW:  CALL    LINE
       CALL    LINE
       ADD     #3,A0
       SOB     OLOOP,DOROW
       RTN

LINE:   CTRLC   EXIT
       MOV     ROW,D1
       ROLW    D1,#8.
       ADDW    COL,D1
       TCRT
       MOV     #3,ILOOP
       MOV     A0,A1
20$:    MOVB    (A1)+,D1
       TTY
       TTY
       TTY
       TTY
       SOB     ILOOP,20$
       INC     ROW
       RTN

EXIT:   CRT     #28.
       CRT     #0
       PRTTAB  -1,28.                          ;dkh - turn on cursor
       EXIT

DIGTBL: ASCII   /0000 00 00 0000/
       ASCII   /11  1  1  1 111/
       ASCII   /222  22222  222/
       ASCII   /333  3333  3333/
       ASCII   /4 44 4444  4  4/
       ASCII   /5555  555  5555/
       ASCII   /6666  6666 6666/
       ASCII   /777  7  7  7  7/
       ASCII   /8888 88888 8888/
       ASCII   /9999 9999  9  9/
       EVEN

       END