Listing of file='OLDTIM.MAC;01' on disk='vmedia/taylor-sideB-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; TIME - TIME CONTROL ROUTINE ; ; KEEPS TRACK OF TIME. ROUGHLY COUNTS SECONDS, ; DEPENDING ON SIZE OF MAIN PROGRAM. DOES A ; COUNT-DOWN AND COUNTERS ARE PUBLIC SO THAT ; THEY MAY BE INITIALISED FROM CALLING PROGRAM. ; THE SPEED OF THE CLOCK CAN BE ADJUSTED BY THE ; PUBLIC VARIABLE CLKCNT, WHICH IS THE NUMBER OF ; "TICKS" IN A "SECOND". ; TITLE TIME ENTRY TIME PUBLIC MINCNT,SECCNT,TIKCNT,CLKCNT ; ; VALUES ON ENTRY: ; IRRELEVANT ; ; RETURNS: ; NOTHING - COUNTERS ARE PUBLIC ; ; FLAGS SET: ; <Z> IS SET WHEN TIME REACHES ZERO ; (I.E. <Z> NOT SET INDICATES STILL TIMING) ; ; DESTROYS: ; ALL REGISTERS ; ; ; EXTERNALS :- REQUIRED SUBROUTINES ; EXTRN DECOUT ;CONVERTS A BYTE TO ASCII DECIMAL NO. EXTRN DELAY ;DOES A TIME DELAY EXTRN OSTR ;OUTPUT A STRING ;.............................................................. TIME: LXI H,TIKCNT ;CHECK IF A NEW SECOND ELAPSED DCR M RNZ ;RETURN IF NOT LDA CLKCNT MOV M,A ;RESET TICK COUNTER INX H DCR M ;DECREMENT SECONDS JNZ TIMDSP ;AND DISPLAY TIME IF NOT ZERO LDA MINCNT ORA A ;CHECK FOR TIME-OUT JZ TIMDSP MVI M,59 ;OTHERWISE RESET SECONDS INX H DCR M ;DECREMENT MINUTES TIMDSP: LXI H,MINMSG ;DISPLAY TIME LEFT LDA MINCNT CALL DECOUT ;CONVERT MINUTES LXI H,SECMSG LDA SECCNT CALL DECOUT ;CONVERT SECONDS LXI H,MINMSG MVI M,' ' ;CHOP OFF LEADING ZERO ON MINS INX H INX H INX H MVI M,':' ;INSERT COLON BEFORE SECS LXI H,TIMMSG CALL OSTR ;OUTPUT TIME MESSAGE LDA MINCNT MOV B,A LDA SECCNT ORA B ;SET <Z> ACCORDINGLY AND RETURN RET ;.............................................................. ; ; DATA AREA ; CLKCNT: DB 5 ;NUMBER OF "TICKS" IN A "SECOND" TIKCNT: DB 5 ;TICK COUNTER SECCNT: DB 60 ;SECOND COUNTER MINCNT: DB 9 ;MINUTE COUNTER ; ; MESSAGES ; TIMMSG: DB 3,30,0,6,3,'TIME',10,26,26,26,26,26 MINMSG: DB ' 10' SECMSG: DB ':00',239 END