*------------------------------------------------------------------------------ * NAME SCR_MODE *------------------------------------------------------------------------------ * DEPENDENCY None * PURPOSE Check the mode & set if required * DESCRIPTION Checks for the mode passed in D0 and if not correct, change to * that mode. * INPUTS : * D0.B = 4 or 8 for required mode * OUTPUTS : * D0 = Error code * Z flag set if no errors, unset otherwise. *------------------------------------------------------------------------------ scr_mode move.l d1-d2/d7/a3,-(a7) ; Save working registers move.b d0,d7 ; Save required mode cmpi.w #4,d7 ; Is mode 4 required ? bne.s scrm_8 ; Nope. clr.b d7 ; Mode 4 requires 0 scrm_8 moveq #mt_dmode,d0 moveq #-1,d1 ; Read current mode moveq #-1,d2 ; Read current display type trap #1 ; Do it tst.l d0 ; Did it work ? bne.s scrm_exit ; No, bale out cmp.b d1,d7 ; Are we in the correct mode ? beq.s scrm_exit ; Don't set mode if already correct (Z * ; set = no errors & D0 = zero) moveq #mt_dmode,d0 move.b d7,d1 ; Get the required mode from D7 trap #1 ; Set mode move.l (a7)+,d1-d2/d7/a3 ; Restore working registers tst.l d0 ; Set Z flag if no errors scrm_exit rts