home *** CD-ROM | disk | FTP | other *** search
-
- ************************************************
- * *
- * $70 interrupt test by Jedi from Sector One *
- * *
- ************************************************
-
- header
-
- move cs,a
- move a,ds
- bsr installISR
-
- * Comment the following line if you want to kill that nasty demo after
- * having pressed a key
-
- bra.s resid
-
- xor a,a
- trap #$16
- bsr uninstallISR
-
- move #$4c00,a
- trap #$21
-
- resid move #@end,d
- move #$3100,a
- trap #$21
-
- * readRTC : ax = index
-
- readRTC pushf
- intoff
- or.b #$80,a
- out.b a,$70
- bra.s *+2
- in.b $71,a
- push a
- bra.s *+2
- move.b #$d,a
- out.b a,$70
- bra.s *+2
- in.b $71,a
- pop a
- popf
-
- rts
-
- * setRTC : ax = index ; dl = value
-
- setRTC pushf
- push a
- intoff
-
- or.b #$80,a
- out.b a,$70
- bra.s *+2
-
- move.b d,a
-
- out.b a,$71
- bra.s *+2
- move.b #$d,a
- out.b a,$70
- bra.s *+2
- in.b $71,a
- pop a
- popf
-
- rts
-
- installISR
- move #$3570,a
- trap #$21
- cs:move b,old70int
- cs:move es,old70int+2
- move #int70proc,d
- push ds
- move cs,a
- move a,ds
- move #$2570,a
- trap #$21
- pop ds
-
- move #$b,a
- bsr readRTC
- or.b #$40,a
- move a,d
- move #$b,a
- bsr setRTC
- move #$c,a
- bsr readRTC
-
- move #$a,a
- bsr readRTC
- and.b #$f0,a
- or.b #8,a
- move a,d
- move #$ah,a
- bsr setRTC
-
- intoff
- in.b $a1,a
- and.b #$fe,a
- bra.s *+2
- out.b a,$a1
- inton
-
- rts
-
- uninstallISR
- move #$b,a
- bsr readRTC
- and.b #$bf,a
- move.b a,d
- move #$b,a
- bsr setRTC
- move #$a,a
- bsr readRTC
- and.b #$f0,a
- or.b #6,a
- move a,d
- move #$a,a
- bsr setRTC
- push ds
- move #$2570,a
- cs:lds old70int,d
- trap #$21
- pop ds
-
- rts
-
- * Here is the routine called periodically
-
- int70proc
- push a
- push d
- push es
-
- move #$3c8,d
- xor.b a,a
- out.b a,d
- inc d
- out.b a,d
- out.b a,d
- jerky move.b #127,a
- out.b a,d
- cs:inc.b jerky+1
-
- move #$c,a
- bsr readRTC
-
- intoff
- move.b #$20,a
- out.b a,$a0
- out.b a,$20
- pop es
- pop d
- pop a
- rti
-
- old70int
- dc.l 0
-
- segment
- ds.l $400
- stack
-
- segment
- end
-