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

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