home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Unsorted BBS Collection
/
thegreatunsorted.tar
/
thegreatunsorted
/
programming
/
asm_programming
/
INT70.S
< prev
next >
Wrap
Text File
|
1995-10-15
|
3KB
|
171 lines
************************************************
* *
* $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