69 lines
1.2 KiB
NASM
69 lines
1.2 KiB
NASM
; -*-asm-*-
|
|
include(`common.m4')
|
|
|
|
define(ticks_, 00)
|
|
|
|
BRA r :reset
|
|
BRA r :irq
|
|
|
|
;;; begin irq
|
|
irq: PHA s
|
|
|
|
LDA a T1CL
|
|
DEC zp ticks_
|
|
|
|
PLA s
|
|
RTI s
|
|
;;; end irq
|
|
|
|
|
|
reset: SEI i
|
|
LDX # ff
|
|
TXS i
|
|
|
|
LDA # %00000001 ;; Set pins 0-7 on Port B to Output
|
|
STA a DDRB
|
|
|
|
LDA # %00000001
|
|
STA a PORTB
|
|
|
|
JSR a :continuous
|
|
|
|
count: LDA # 25
|
|
STA zp ticks_
|
|
|
|
loop: LDA zp ticks_
|
|
BPL r :loop
|
|
LDA # %00000001
|
|
EOR a PORTB
|
|
STA a PORTB
|
|
BRA r :count
|
|
|
|
|
|
;;; begin continuous
|
|
continuous: LDA # %01000000
|
|
STA a ACR
|
|
LDA # 0e
|
|
STA a T1CL
|
|
LDA # 27
|
|
STA a T1CH
|
|
LDA # %11000000
|
|
STA a IER
|
|
CLI i
|
|
RTS s
|
|
;;; end continuous
|
|
|
|
|
|
;;; begin oneshot
|
|
oneshot: LDA # %00000000
|
|
STA a ACR
|
|
LDA # 50
|
|
STA a T1CL
|
|
LDA # c3
|
|
STA a T1CH
|
|
_oneshot: BIT a IFR
|
|
BVC r :_oneshot ; IFR[6]==0
|
|
LDA a T1CL ; clear IFR[6]
|
|
RTS s
|
|
;;; end oneshot
|