home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1985 September / Antic_Magazine_1985_09_Antic.atr / timer4.asm < prev    next >
Assembly Source File  |  2023-02-26  |  2KB  |  1 lines

  1. 0100 ;TIMER 4¢0110 ;BY FRED PINHO¢0120 ;(c) 1985, ANTIC PUBLISHING¢0160     *=  $0600   ;RELOCATABLE¢0170 ;SEE LISTING 2 FOR REMARKS ON PAGE 6 ASSEMBLY¢0180     .TITLE "LISTING 4"¢0190     .TAB 14,18,26¢0200     .SET 1,4¢0210 XITVBV = $E462¢0220     CLD         ;MUST BE DONE¢0230     LDA 1021    ;TIMER ACTIVATED?¢0240     BNE GOON    ;YES. SKIP AROUND¢0250     LDA #1      ;NO. SET DELAY FOR IMMEDIATE DISPLAY¢0260     STA 1028¢0270     LDA #0      ;SET LOCATIONS TO 0¢0280     STA 18¢0290     STA 19¢0300     STA 20¢0310     LDA #255    ;SET TO INDICATE ACTIVE TIMER¢0320     STA 1021¢0330 GOON DEC 1028   ;CALCULATE TIME?¢0340     BNE EXIT    ;NO. BYPASS ROUTINE¢0350     LDA #10     ;YES. RESET DELAY COUNTER¢0360     STA 1028¢0370     LDA 20      ;GET TIMER COUNT¢0380     STA 1022    ;LO BYTE¢0390     LDA 19      ;HI BYTE¢0400 DIVIDE LDX #8   ;DIVIDE BY 60¢0410 LOOP1 ASL 1022  ;TO GET TOTAL SECONDS¢0420     ROL A¢0430     CMP #60¢0440     BCC BRCH1¢0450     SBC #60¢0460     INC 1022¢0470 BRCH1 DEX ¢0480     BNE LOOP1¢0490     STA 1023¢0500 ;TOTAL SECONDS STORED IN REGISTER 1022¢0510     LDX #8      ;DIVIDE BY 60¢0520     LDA #0      ;TO GET MINUTES¢0530 LOOP2 ASL 1022¢0540     ROL A¢0550     CMP #60¢0560     BCC BRCH2¢0570     SBC #60¢0580     INC 1022¢0590 BRCH2 DEX ¢0600     BNE LOOP2¢0610     STA 1023¢0620 ;MINUTES IN 1022, REMAINING SECONDS IN 1023¢0630 ;NOW DIVIDE BY 10 TO GET HI AND LO DIGITS OF DECIMAL NUMBER¢0640     LDX #8¢0650     LDA #0¢0660 LOOP3 ASL 1023¢0670     ROL A¢0680     CMP #10¢0690     BCC BRCH3¢0700     SBC #10¢0710     INC 1023¢0720 BRCH3 DEX ¢0730     BNE LOOP3¢0740     STA 1024¢0750 ;SECONDS(TENS PLACE) IN 1023¢0760 ;SECONDS(UNIT PLACE) IN 1024¢0770 DISPLAY CLC     ;STORE 3 DIGITS INTO DISPLAY AREA¢0780     LDY #0¢0790     LDA 1022    ;MINUTES¢0800     ADC #16     ;CONVERT TO SCREEN CODE¢0810     STA (208),Y ;STORE¢0820     INY ¢0830     LDA #26     ;SCREEN CODE FOR ':'¢0840     STA (208),Y¢0850     INY ¢0860     LDA 1023    ;SECONDS(HI)¢0870     ADC #16¢0880     STA (208),Y¢0890     INY ¢0900     LDA 1024    ;SECONDS(LO)¢0910     ADC #16¢0920     STA (208),Y¢0930     LDA 1027    ;TIMER DONE?¢0940     BNE DISABLE ;YES¢0950 EXIT JMP XITVBV ;NO. JUST RETURN TO VBI¢0960 DISABLE LDA #$62 ;RESTORE ORIGINAL VBI VECTOR¢0970     STA 548¢0980     LDA #$E4¢0990     STA 549¢1000     JMP XITVBV  ;EXIT¢1010     .END ¢