diff --git a/src/dos_m65/dos_memchk.s b/src/dos_m65/dos_memchk.s index f646228b..cde237bb 100644 --- a/src/dos_m65/dos_memchk.s +++ b/src/dos_m65/dos_memchk.s @@ -6,6 +6,9 @@ dos_MEMCHK: + pha + phx + ; Check for magic string ldx #$04 @@ -34,10 +37,14 @@ dos_MEMCHK: cmp code_RTS_03 bne @fail + plx + pla clc rts @fail: + plx + pla sec rts diff --git a/src/dos_m65/dos_unitchk.s b/src/dos_m65/dos_unitchk.s index 16317d41..610f617d 100644 --- a/src/dos_m65/dos_unitchk.s +++ b/src/dos_m65/dos_unitchk.s @@ -6,13 +6,13 @@ dos_UNITCHK: - jsr dos_ENTER - - ; Check if memory content is not damaged + ; Before the start make sure memory content is not damaged jsr dos_MEMCHK - bcs dos_UNITCHK_fail - lda REG_A + bcc @ok + rts +@ok: + jsr dos_ENTER ; Check for unit diff --git a/src/dos_m65/dos_unitnum.s b/src/dos_m65/dos_unitnum.s index dbdc3c99..3acd1a4e 100644 --- a/src/dos_m65/dos_unitnum.s +++ b/src/dos_m65/dos_unitnum.s @@ -6,13 +6,14 @@ dos_UNITNUM: - jsr dos_ENTER - - ; Check if memory content is not damaged + ; Before the start make sure memory content is not damaged jsr dos_MEMCHK - bcs dos_UNITNUM_fail - lda REG_A + bcc @ok + lda #$00 ; failure + rts +@ok: + jsr dos_ENTER ; Check what kind of device was requested diff --git a/src/dos_m65/dos_unitset.s b/src/dos_m65/dos_unitset.s index 2de4eebe..e57c29eb 100644 --- a/src/dos_m65/dos_unitset.s +++ b/src/dos_m65/dos_unitset.s @@ -6,14 +6,14 @@ dos_UNITSET: - jsr dos_ENTER - - ; Check if memory content is not damaged + ; Before the start make sure memory content is not damaged jsr dos_MEMCHK - bcc @1 + bcc @ok rts -@1: +@ok: + jsr dos_ENTER + ; XXX do not allow illegal device numbers... above 30 or below 8 ? ; Check what kind of device was requested