EasyManua.ls Logo

Commodore Amiga A2000 - Page 340

Commodore Amiga A2000
380 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
; A complete 8520 timing example. This blinks the power light at (exactly)
; 3 millisecond intervals. It takes over the machine, 50 watch out!
;
; The base Amiga crystal frequencies are:
; NTSC 28.63636 MHz
; PAL 28.37516 MHz
;
; The two 16 bit timers on the 8520 chips each count down at 1/10 the CPU
; clock, or 0.715909 MHz. That works out to 1.3968255 microseconds per
count.
; Under PAL the countdown is slightly slower, 0.709379 MHz.
;
; To wait 1/100 second would require waiting 10,000 microseconds.
; The timer register would be set to (10,000 / 1.3968255 - 7159).
;
; To wait 3 milliseconds would require waiting 3000 microseconds.
; The register would be set to (3000 / 1.3968255 - 2148).
INCLUDE "hardware/cia.i"
INCLUDE "hardware/custom.i"
;
XREF _ciaa
XREF _ciab
XREF _custom
;
lea _custom,a3 ; Base of custom chips
lea _ciaa,a4 ; Get base address if CIA-A
;
move.w S7fff,dmacon(a3) ; Kill all chip interrupts
;
; Setup, only do once
; This set all bits needed for timer A one-shot mode.
;
move.b ciacra(a4),d0 ;Set control register A on CIAA
and.b #%11000000,d0 ;Don't trash bits we are not
or.b #%00001000,d0 ;using...
move.b d0,ciacra(a4)
move.b #%01111111,ciaicr(a4) ;Clear all 8520 interrupts
;
Set time (low byte THEN high byte)
And the low order with $ff
Shift the high order by 8
;
TIME equ 2148
move.b (TIME&$FF),ciatalo(a4)
move.b (TIME>>8),ciatahi(a4)
;
; Wait for the timer to count down
busy_wait:
;
btst.b #0,ciaicr(a4) ;Wait for timer expired flag
beq.s busy wait
bchg.b #CIAB LED,ciapra(a4) ;Blink light
bset.b #0,ciacra(a4) ;Restart timer
bra.s busy_wait
END
- Appendix F 331 -

Table of Contents

Other manuals for Commodore Amiga A2000

Related product manuals