* Utility to read the week, date, year and time from the H8-RTC. * By: Norberto Collado * Project: SuperBuffer @ 1986 * Updates: * 4/6/13 - Updated Utility to use the H8-RTC board designed by Norberto Collado * NL EQU 10 ESC EQU 27 EOL EQU 80H .EXIT EQU 0Q .SCIN EQU 1Q .SCOUT EQU 2Q .PRINT EQU 3Q .CONSL EQU 6Q CSL.ECH EQU 10000000B SUPPRESS ECHO CSL.CHR EQU 00000001B CHAR MODE I.CSLMD EQU 0 CONSOLE MODE INDEX I.CSLWI EQU 3 CONSOLE WIDTH STACK EQU 2280H USERFWA EQU STACK Z80PORT EQU 240Q ORG USERFWA * START EQU * LXI SP,STACK MVI A,I.CSLMD MVI B,CSL.ECH+CSL.CHR MVI C,CSL.ECH+CSL.CHR SCALL .CONSL MVI A,I.CSLWI MVI B,255 MOV C,B SCALL .CONSL *PRINT MENU LXI H,MENU SCALL .PRINT *ROUTINE TO READ TIME AND DATE FROM THE BUFFER START1 EQU * IN 240Q *GET SEC1 ANI 17Q ADI 60Q STA SEC1 IN 241Q ANI 07Q ADI 60Q STA SEC10 *GET SEC10 IN 242Q ANI 17Q ADI 60Q STA MIN1 *GET MIN1 IN 243Q ANI 07Q ADI 60Q STA MIN10 *GET MIN10 IN 244Q ANI 17Q ADI 60Q STA HR1 *GET HR1 IN 245Q ANI 7Q *PLEASE CHANGE FOR AM/PM INDICATOR. ADI 60Q *CHANGE TO ASCII STA HR10 *GET HR10 IN 254Q ANI 07Q ADI 60Q STA WEEK *GET WEEK IN 246Q ANI 17Q ADI 60Q STA DAY1 *GET DAY1 IN 347Q ANI 3Q ADI 60Q STA DAY10 *GET DAY10 IN 250Q ANI 17Q ADI 60Q STA MONTH1 *GET MONTH1 IN 251Q ANI 1Q ADI 60Q STA MONTH10 *GET MONTH10 IN 252Q ANI 17Q ADI 60Q STA YEAR1 *GET YEAR1 IN 253Q ANI 17Q ADI 60Q STA YEAR10 *GET YEAR10 LXI H,HOME2 *CURSOR OFF SCALL .PRINT * JMP CONTINU * MENU EQU * *top done DB ESC,'E',ESC,'H' DB ESC,'Y',21H,22H,ESC,'F' DB 'faaaaaaaaaaaaaaaaaaa',ESC,'G','* RTC Monitor *' DB ESC,'F' DB 'aaaaaaaaaaaaaaaaaaaac' DB ESC,'G' *1 one done DB ESC,'Y',22H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *two DB ESC,'Y',23H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *paint labels.. DB ESC,'Y',23H,29H,'-Day: -' DB ESC,'Y',23H,3CH,'-Month: -' DB ESC,'Y',23H,56H,'-Year: 20 -' *three DB ESC,'Y',23H,22H,ESC,'B',ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *four DB ESC,'Y',25H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *print labels.. DB ESC,'Y',25H,37H,'-Time: : : seconds-' *five DB ESC,'Y',26H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *six DB ESC,'Y',27H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *print labels.. DB ESC,'Y',27H,23H,ESC,'C','-Week: -' DB ESC,'Y',27H,41H,'- -' DB ESC,'Y',27H,57H,'-Cursor-' *seven DB ESC,'Y',28H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *print labels DB ESC,'Y',28H,5AH,' ' *nine DB ESC,'Y',29H,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *print labels DB ESC,'Y',29H,37H,'-Press Spacebar to Exit-' *eight DB ESC,'Y',2AH,22H,ESC,'F' DB 60H,ESC,'p' DB ' ' DB ' ' DB ESC,'q',ESC,'F',60H,ESC,'G' *ten DB ESC,'Y',2BH,22H,ESC,'F' DB 'eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' DB 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad' DB ESC,'G' HOME DB ESC,'Y',28H,5BH,ESC,'y','5',EOL HOME1 DB ESC,'Y',2EH,20H,EOL HOME2 DB ESC,'x','5',EOL MESSAGE DB NL,'CLOCK MONITOR PROGRAM - Ver 1.0' DB NL,'Program to monitor the calendar clock.' DB NL,'By: Norberto Collado 04/06/2013.' DB NL,NL,EOL CONTINU EQU * * CHECK DAY OF THE WEEK...IE SUN-MON.... LDA WEEK ANI 07Q CPI 0Q JZ TYPE1 CPI 1Q JZ TYPE2 CPI 2Q JZ TYPE3 CPI 3Q JZ TYPE4 CPI 4Q JZ TYPE5 CPI 5Q JZ TYPE6 LXI H,SAT SCALL .PRINT JMP STOP TYPE1 EQU * LXI H,SUN SCALL .PRINT JMP STOP TYPE2 EQU * LXI H,MON SCALL .PRINT JMP STOP TYPE3 EQU * LXI H,TUE SCALL .PRINT JMP STOP TYPE4 EQU * LXI H,WED SCALL .PRINT JMP STOP TYPE5 EQU * LXI H,THR SCALL .PRINT JMP STOP TYPE6 EQU * LXI H,FRI SCALL .PRINT STOP EQU * *CALCULATE MONTH NAME.. LDA MONTH10 ANI 1Q RLC *DO-D1 RLC *DI-D2 RLC *D2-D3 RLC *D3-D4 MOV E,A LDA MONTH1 ANI 0FH ADD E *CHECK THE MONTH NAME. CPI 1 *CHECK IF JANUARY. JZ JANUARY CPI 2 JZ FEBRUAR CPI 3 JZ MARCH CPI 4 JZ APRIL CPI 5 JZ MAY1 CPI 6 JZ JUNE CPI 7 JZ JULY CPI 8 JZ AUGUST CPI 9 JZ SEPTEMB CPI 10H JZ OCTOBER CPI 11H JZ NOVEMBE LXI H,DEC SCALL .PRINT JMP STOP1 JANUARY EQU * LXI H,JAN SCALL .PRINT JMP STOP1 FEBRUAR EQU * LXI H,FEB SCALL .PRINT JMP STOP1 MARCH EQU * LXI H,MAR SCALL .PRINT JMP STOP1 APRIL EQU * LXI H,APR SCALL .PRINT JMP STOP1 MAY1 EQU * LXI H,MAY SCALL .PRINT JMP STOP1 JUNE EQU * LXI H,JUN SCALL .PRINT JMP STOP1 JULY EQU * LXI H,JUL SCALL .PRINT JMP STOP1 AUGUST EQU * LXI H,AUG SCALL .PRINT JMP STOP1 SEPTEMB EQU * LXI H,SEP SCALL .PRINT JMP STOP1 OCTOBER EQU * LXI H,OCT SCALL .PRINT JMP STOP1 NOVEMBE EQU * LXI H,NOV SCALL .PRINT STOP1 JMP STOP3 *define data storage *ascii time/data SUN DB ESC,'x','5',ESC,'Y',27H,2BH,'Sunday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL MON DB ESC,'x','5',ESC,'Y',27H,2BH,'Monday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL TUE DB ESC,'x','5',ESC,'Y',27H,2BH,'Tuesday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL WED DB ESC,'x','5',ESC,'Y',27H,2BH,'Wednesday',ESC,'Y',28H,5BH,ESC,'y','5',EOL THR DB ESC,'x','5',ESC,'Y',27H,2BH,'Thursday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL FRI DB ESC,'x','5',ESC,'Y',27H,2BH,'Friday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL SAT DB ESC,'x','5',ESC,'Y',27H,2BH,'Saturday ',ESC,'Y',28H,5BH,ESC,'y','5',EOL * *MONTH JAN DB ESC,'x','5',ESC,'Y',23H,44H,'January ',ESC,'Y',28H,5BH,ESC,'y','5',EOL FEB DB ESC,'x','5',ESC,'Y',23H,44H,'February ',ESC,'Y',28H,5BH,ESC,'y','5',EOL MAR DB ESC,'x','5',ESC,'Y',23H,44H,'March ',ESC,'Y',28H,5BH,ESC,'y','5',EOL APR DB ESC,'x','5',ESC,'Y',23H,44H,'April ',ESC,'Y',28H,5BH,ESC,'y','5',EOL MAY DB ESC,'x','5',ESC,'Y',23H,44H,'May ',ESC,'Y',28H,5BH,ESC,'y','5',EOL JUN DB ESC,'x','5',ESC,'Y',23H,44H,'June ',ESC,'Y',28H,5BH,ESC,'y','5',EOL JUL DB ESC,'x','5',ESC,'Y',23H,44H,'July ',ESC,'Y',28H,5BH,ESC,'y','5',EOL AUG DB ESC,'x','5',ESC,'Y',23H,44H,'August ',ESC,'Y',28H,5BH,ESC,'y','5',EOL SEP DB ESC,'x','5',ESC,'Y',23H,44H,'September',ESC,'Y',28H,5BH,ESC,'y','5',EOL OCT DB ESC,'x','5',ESC,'Y',23H,44H,'October ',ESC,'Y',28H,5BH,ESC,'y','5',EOL NOV DB ESC,'x','5',ESC,'Y',23H,44H,'November ',ESC,'Y',28H,5BH,ESC,'y','5',EOL DEC DB ESC,'x','5',ESC,'Y',23H,44H,'December ',ESC,'Y',28H,5BH,ESC,'y','5',EOL ********************************************************************** STOP3 EQU * *ROUTINE TO DISPLAY AM OR PM LDA HR10 ANI 4Q *GET AM/PM INDICATOR CPI 1Q *CHECK IF PM JZ FOUNDPM NEXTONE EQU * LDA HR10 *CHECK NEXT BIT ANI 2Q CPI 2Q JZ FNDLARG LXI H,MESSAG2 *AM SCALL .PRINT JMP NEXT FOUNDPM EQU * LDA HR1 ANI 0FH CPI 03Q *CHECK IF GREATER THAN 2 JNC FNDLARG JMP NEXTONE FNDLARG EQU * LXI H,MESSAG3 *PM SCALL .PRINT NEXT EQU * *DISPLAY TIME LXI H,TIME SCALL .PRINT *DISPLAY YEAR LXI H,YEAR SCALL .PRINT *DISPLAY DAY LXI H,DAY SCALL .PRINT *CURSOR HOME LXI H,HOME SCALL .PRINT *DELAY I SEC MVI A,377Q STA SPARE DELAY10 CALL DELAY LDA SPARE DCR A ORA A STA SPARE JNZ DELAY10 *CHECK CONSOLE STATUS SCALL .SCIN JNC QUIT JMP START1 *PLEASE ERASE WHEN DONE. QUIT EQU * *CURSOR ON , NORMAL POSITION LXI H,HOME1 SCALL .PRINT MVI A,ESC SCALL .SCOUT MVI A,'z' SCALL .SCOUT XRA A SCALL .EXIT BACK TO HDOS JMP * MESSAG2 DB ESC,'x','5',ESC,'Y',27H,42H,'am',ESC,'Y',28H,5BH,ESC,'y','5',EOL MESSAG3 DB ESC,'x','5',ESC,'Y',27H,42H,'pm',ESC,'Y',28H,5BH,ESC,'y','5',EOL DELAY EQU * MVI A,0Q DELAY1 DCR A ORA A JNZ DELAY1 RET *VARIABLES SPACE ALLOCATION.. TIME DB ESC,'x','5',ESC,'Y',25H,3EH HR10 DS 1 HR1 DS 1 DB ':' MIN10 DS 1 MIN1 DS 1 DB ':' SEC10 DS 1 SEC1 DS 1 DB ESC,'Y',28H,5BH,ESC,'y','5',EOL YEAR DB ESC,'x','5',ESC,'Y',23H,5FH YEAR10 DS 1 YEAR1 DS 1 DB ESC,'Y',28H,5BH,ESC,'y','5',EOL MONTH10 DS 1 MONTH1 DS 1 DAY DB ESC,'x','5',ESC,'Y',23H,2FH DAY10 DS 1 DAY1 DS 1 DB ESC,'Y',28H,5BH,ESC,'y','5',EOL WEEK DS 1 SPARE DS 1 END START