* COPYRIGHT (C) 1984 BY PETER A. STARK * 146818 CLOCK PATCH FOR SK*DOS * PROGRAM READS THE DATE FROM THE PT-69 BOARD'S CLOCK * CHIP ON BOOTUP OF SK*DOS, SO USER DOES NOT HAVE TO * TYPE IT IN. * PROGRAM DOES NOTHING IF THE CLOCK IS NOT SET PROPERLY * APPEND THIS CODE TO SK*DOS.SYS * EQUATES MONTH EQU $CC0E MONTH DAY EQU $CC0F DAY YEAR EQU $CC10 YEAR COLDS EQU $CD00 SK*DOS TRANSFER ADDRESS CLOCKA EQU $E01D CLOCKD EQU $E01E * PATCH SK*DOS TO COME HERE ORG $CA02 JMP GETDAT GO TO THIS PATCH TO GET DATE * GET THE TIME AND DATE AND CHECK THEM ORG $C400 GETDAT PSHS A,B,X,Y,U SAVE ALL REGISTERS LDA #2 BSR READIT GET MINUTES CMPA #$59 CHECK IT BHI NOGOOD CLOCK NOT SET IF >59 MIN LDA #4 BSR READIT GET HOURS ANDA #$7F REMOVE AM/PM FLAG CMPA #$12 CHECK IT BHI NOGOOD NG IF PAST 12 O'CLOCK LDA #6 BSR READIT GET DAY OF WEEK CMPA #7 CHECK IT BHI NOGOOD NO 8-DAY WEEKS ALLOWED LDA #7 BSR READIT GET DAY OF MONTH CMPA #$31 CHECK IT BHI NOGOOD MAX 31 DAYS A MONTH BSR BCDHEX CONVERT BCD TO HEX STA DAY GIVE IT TO SK*DOS LDA #8 BSR READIT GET MONTH CMPA #$12 CHECK IT BHI NOGOOD MAX 12 MONTHS A YEAR BSR BCDHEX CONVERT BCD TO HEX STA MONTH GIVE IT DO SK*DOS LDA #9 BSR READIT GET THE YEAR CMPA #$84 CHECK IT BLO NOGOOD MUST BE 84 OR LATER CMPA #$99 BHI NOGOOD ASSUME THIS CENTURY BSR BCDHEX CONVERT BCD TO HEX STA YEAR GIVE IT TO SK*DOS PULS A,B,X,Y,U RTS AND THEN CONTINUE SK*DOS * ON INVALID TIME, JUST RETURN TO SK*DOS NOGOOD PULS A,B,X,Y,U JMP $CA05 CONTINUE JUST AFTER EXIT * GET DATA FROM 146818 CLOCK CHIP READIT STA CLOCKA GIVE ADDRESS TO CLOCK LDA CLOCKD GET THE DATAGAIN RTS * CONVERT BCD TO HEX ROUTINE BCDHEX PSHS A SAVE BCD NUMBER LSRA LSRA MOVE MSD INTO LSD LSRA LSRA LDB #10 MUL MULTIPLY IT BY 10 PULS A GET OLD VALUE FROM STACK ANDA #$0F KEEP ONLY LSD PSHS B SAVE TENS VALUE ON STACK ADDA 0,S+ ADD IT TO UNITS RTS AND RETURN END COLDS