* COPYRIGHT (C) 1984 BY PETER A. STARK * STAR-K SOFTWARE SYSTEMS CORP. * TIME PATCH FOR SK*DOS ***** CAUTION ******* * THIS VERSION IS ORG'D AT DD80, AND FITS IN BEFORE THE * DISK DRIVERS - MAY NOT FIT INTO LATER * VERSIONS OF SK*DOS * THIS PROGRAM IS CALLED WHEN SK*DOS OPENS A FILE * FOR WRITING, READS THE TIME FROM THE 146818 CLOCK * ON THE PT-69 BOARD, CONVERTS THE TIME INTO A * ONE-BYTE CODE, AND PUTS IT INTO THE ACCUMULATOR SO * SK*DOS CAN PUT IT INTO THE DIRECTORY. * THIS FILE SHOULD BE ASSEMBLED AND APPENDED TO SK*DOS, * OR IT MAY BE USED AS A COMMAND ONCE SK*DOS IS BOOTED. * EQUATES CLOCKA EQU $E01D CLOCK ADDRESS CLOCKD EQU CLOCKA+1 CLOCK DATA INTIME EQU $CD57 SK*DOS TIME TRAP * START OF PROGRAM ORG $DD80 * CHECK FOR VALID TIME ON CLOCK SETIME PSHS B SAVE B ACCUMULATOR * CHECK THAT YEAR IS 85 THRU 90 LDA #09 YEAR ADDRESS BSR GETDAT GET DATA FROM CHIP CMPA #$85 BLO TIMENG QUIT IF TIME IS NG CMPA #$90 BHI TIMENG DITTO * GET THE TIME GETTIM LDA #$0A CHECK IF OK TO READ BSR GETDAT GET UPD IN PROG BIT BMI GETTIM WAIT UNTIL IT IS ZERO LDA #02 BSR GETDAT GET MINUTES STA MINUTE LDA #04 BSR GETDAT GET HOURS CMPA #$12 12 HOURS AM? BNE NOT12 NO CLRA YES, FORCE TO 0 HOURS NOT12 STA HOURS LDA MINUTE GET MINUTES BSR BCDHEX CONVERT MINUTES TO HEX CLRB COUNTER=0 DIVBY6 SUBA #6 SUBTRACT 6 MINUTES BMI DONDIV FINISHED CONVERTING MINUTES INCB ELSE INCREMENT B BRA DIVBY6 AND REPEAT DONDIV LDA HOURS GET HOURS ANDA #$7F REMOVE AM/PM BIT STB MINUTE MINUTES NOW DIVIDED BY 6 BSR BCDHEX CONVERT HOURS TO HEX LDB #10 MUL MULTIPLY BY 10 ADDB MINUTE ADD MINUTES/6 TFR B,A MOVE INTO A LDB HOURS CHECK IF AM OR PM BMI ISPM IF PM TSTA CHECK FOR 24:00 HOURS BNE QUIT EXIT IF NOT LDA #120 ELSE MAKE 12 (+12 LATER = 24) ISPM CMPB #$92 CHECK FOR 12:XX PM BEQ QUIT YES, LEAVE AT 12 ADDA #120 ELSE CVT TO 24 HR TIME QUIT PULS B,PC RESTORE B AND RETURN * IF TIME IS NG, RETURN 0 TIMENG CLRA BRA QUIT * GIVE ADDRESS TO CLOCK AND GET DATA GETDAT STA CLOCKA GIVE IT ADDRESS LDA CLOCKD GET DATA RTS AND RETURN * CONVERT BCD NUMBER TO HEX 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 SAVE ONLY LSD PSHS B SAVE TENS VALUE ON STACK ADDA 0,S+ ADD IT TO UNITS RTS AND RETURN * DATA STORAGE HOURS RMB 1 MINUTE RMB 1 * SK*DOS POINTER TO THIS ROUTINE ORG INTIME JMP SETIME GO HERE WHEN OPENING WRITE FILE END $CD00