home *** CD-ROM | disk | FTP | other *** search
- ** Revision Header * Header built automatically - do not edit! *************
- *
- * (C) Copyright 1991 by Olaf `Olsen' Barthel, all rights reserved
- *
- * Name .....: WaitLine.asm
- * Created ..: Monday 26-Aug-91 11:20
- * Revision .: 1
- *
- * Date Author Comment
- * ========= ======== ====================
- * 26-Aug-91 Olsen Created this file!
- *
- ****************************************************************************
-
- section text,code
-
- xdef _WaitLine
-
- ; VOID __asm WaitLine(register __d1 Line);
- ;
- ; Small routine to wait for a specific Y-position of the
- ; electron beam (busy polling, actually).
- ;
- ; Register usage is as follows:
- ;
- ; d0 = Electron beam line number
- ; d1 = Line number
- ; a0 = Address of VPOSR register
- ; a1 = Address of VHPOSR register
-
- _WaitLine:
- lea.l $dff006,a1 ; Grab VHPOSR
-
- moveq #0,d0 ; Clear line counter
-
- sub.w #1,d1 ; Subtract one line to make it valid
-
- btst #8,d1 ; Bit 8 required?
- beq.s 3$
-
- lea.l $dff004,a0 ; Grab VPOSR
-
- 1$ move.w (a0),d0 ; Get 8th bit of line counter
- btst #0,d0 ; Bit set?
- beq.s 2$
- move.w (a1),d0 ; Get position of electron beam
- lsr.w #8,d0 ; Shift to get the high order byte
- bset #8,d0 ; Set the 8th bit
- cmp.w d1,d0 ; Compare with desired line number
- blt.s 1$ ; Loop until reached
- rts
-
- 2$ move.w (a1),d0 ; Get position of electron beam
- lsr.w #8,d0 ; Shift to get the high order byte
- cmp.w d1,d0 ; Compare with desired line number
- blt.s 1$ ; Loop until reached
- rts
-
- 3$ move.w (a1),d0 ; Get position of electron beam
- lsr.w #8,d0 ; Shift to get the high order byte
- cmp.w d1,d0 ; Compare with desired line number
- blt.s 3$ ; Loop until reached
- rts
-
- end
-