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