home *** CD-ROM | disk | FTP | other *** search
- ; THIS PROGRAM WILL READ AND DISPLAY THE
- ; TIME AND DATE FROM A COMPU/TIME BOARD
- ;
- ; ASSIGNMENTS
- ;
- CR: EQU 0DH ; CARRIAGE RETURN
- LF: EQU 0AH ; LINE FEED
- ACONT: EQU 25H ; PORT A CONTROL
- ADATA: EQU 24H ; PORT A DATA
- BCONT: EQU 27H ; PORT B CONTROL
- BDATA: EQU 26H ; PORT B DATA
- ;
- ; ENTRY VECTORS
- ;
- JMP DATE ; GET THE DATE
- JMP TIME ; GET THE TIME
- ;
- ; READ A DIGIT ROUTINE
- ;
- RDIGIT: MOV A,D ; SELECT DIGIT
- OUT ADATA
- IN ADATA ; RESET INTERRUPT
- DWAIT: IN ACONT ; TEST FOR DIGIT PRESENT
- ANI 80H ; IS IT THERE?
- JZ DWAIT ; NO, THEN LOOP
- IN ADATA ; READ A DIGIT
- ANI 0FH ; MASK ZONE
- ORI 30H ; SET ASCII
- RET
- ;
- ; READ FOUR DIGITS ROUTINE
- ;
- READ4: MVI D,0 ; SELECT FIRST DIGIT
- NEXT: CALL RDIGIT ; DELAY ONE DIGIT SCAN
- CALL RSDIG ; READ AND STORE DIGIT
- MOV A,D
- CPI 20H ; TEST IF TWO DIGITS DONE
- JNZ SKIP
- MOV A,C
- CPI 0 ; DATE
- JNZ COLON ; IT'S FOR TIME
- MVI A,'/' ; IT'S FOR DATE
- JMP DOIT
- COLON: MVI A,':'
- DOIT: CALL SDIGIT
- SKIP: MOV A,D ; TEST FOR ALL DONE
- CPI 40H
- RZ
- JMP NEXT ; GET ANOTHER DIGIT
- ;
- ; STORE A DIGIT ROUTINE
- ;
- SDIGIT: MOV M,A
- INX H
- RET
- ;
- ; READ DATE ROUTINE
- ;
- DATE: CALL BOARD ; IS THERE A BOARD
- JZ NOBOARD ; NOPE
- CALL CLKINT
- XCHG
- MVI A,0 ; SET DATE DISPLAY MODE
- OUT BDATA
- MVI C,0 ; TELL READ4 THIS IS DATE
- CALL READ4
- MVI A,'/'
- CALL SDIGIT
- MVI A,'7' ; SET TENS OF YEARS
- CALL SDIGIT
- MVI A,'9' ; SET UNITS OF YEARS
- CALL SDIGIT
- RET
- ;
- ; READ THE TIME
- ;
- TIME: CALL BOARD ; CHECK IF BOARD THERE
- JZ NOBOARD
- CALL CLKINT
- XCHG
- MVI A,40H ; SET TIME DISPLAY MODE
- OUT BDATA
- MVI C,1 ; TELL READ4 THIS IS TIME
- CALL READ4
- MVI A,':'
- CALL SDIGIT
- CALL RSDIG
- ;
- ; READ AND STORE A DIGIT
- ;
- RSDIG: CALL RDIGIT
- CALL SDIGIT
- MOV A,D
- ADI 10H
- MOV D,A
- RET
- ;
- ; NO BOARD IN THE SYSTEM
- ;
- NOBOARD: XCHG
- MVI A,0
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- CALL SDIGIT
- RET
- ;
- ; SEE IF BOARD PRESENT
- ;
- BOARD: IN ADATA
- CPI 0FFH
- RET
- ;
- ; INITIALIZE CLOCK/CALENDAR PORT
- ;
- CLKINT: MVI A,70H
- OUT ADATA
- MVI A,77H
- OUT BDATA
- MVI A,14H
- OUT ACONT
- MVI A,04
- OUT BCONT
- RET
-