Mercurial > hg > Members > kono > nitros9-code
diff level1/modules/rbdw3.asm @ 2656:2ebf5e737ceb
Updated to address Atari port problems
author | Boisy Pitre <boisy.pitre@nuance.com> |
---|---|
date | Wed, 11 Apr 2012 21:21:22 -0500 |
parents | 8d24c482646e |
children | 37d3ee1458b6 |
line wrap: on
line diff
--- a/level1/modules/rbdw3.asm Tue Apr 10 22:25:19 2012 -0500 +++ b/level1/modules/rbdw3.asm Wed Apr 11 21:21:22 2012 -0500 @@ -77,25 +77,35 @@ * B = error code * Term - clrb - pshs cc + clrb + pshs cc * Send OP_TERM to the server IFGT LEVEL-1 - ldu <D.DWSubAddr - ELSE - ldu >D.DWSubAddr - ENDC + ldu <D.DWSubAddr + ELSE + ldu >D.DWSubAddr + ENDC * Fix crash in certain cases - beq no@ - ldy #$0001 - lda #OP_TERM - pshs a - leax ,s - orcc #IntMasks - jsr DW$Write,u - clrb - puls a -no@ puls cc,pc + beq no@ + ldy #$0001 + IFNE atari + lda D.ATARIFLAGS + ora #DWIOSEMA + sta D.ATARIFLAGS + ENDC + lda #OP_TERM + pshs a + leax ,s + orcc #IntMasks + jsr DW$Write,u + IFNE atari + lda D.ATARIFLAGS + anda #^DWIOSEMA + sta D.ATARIFLAGS + ENDC + clrb + puls a +no@ puls cc,pc * Init * @@ -148,12 +158,22 @@ stu >D.DWSubAddr ENDC * Initialize the low level device + IFNE atari + lda D.ATARIFLAGS + ora #DWIOSEMA + sta D.ATARIFLAGS + ENDC jsr DW$Init,u lda #OP_INIT sta ,s leax ,s ldy #$0001 jsr DW$Write,u + IFNE atari + lda D.ATARIFLAGS + anda #^DWIOSEMA + sta D.ATARIFLAGS + ENDC clrb InitEx @@ -213,13 +233,18 @@ ldb #E$Unit bra ReadEr2 Read1 sta driveno,u + IFNE atari + lda D.ATARIFLAGS + ora #DWIOSEMA + sta D.ATARIFLAGS + ENDC lda #OP_READEX load A with READ opcode Read2 ldb driveno,u leax ,s std ,x - ldy #5 + ldy #5 IFGT LEVEL-1 ldu <D.DWSubAddr ELSE @@ -244,9 +269,9 @@ leax ,s ldy #$0001 jsr DW$Read,u + puls d bcs ReadEr0 branch if we timed out bne ReadEr0 - puls d tfr a,b transfer byte to B (in case of error) tstb is it zero? beq ReadEx if not, exit with error @@ -258,12 +283,17 @@ lda #OP_REREADEX reread opcode bra Read2 and try getting sector again -ReadEr0 puls d +ReadEr0 ReadEr1 ldb #E$Read read error ReadEr2 lda 9,s ora #Carry sta 9,s ReadEx leas 5,s + IFNE atari + lda D.ATARIFLAGS + anda #^DWIOSEMA + sta D.ATARIFLAGS + ENDC puls y,u puls cc,pc @@ -283,6 +313,11 @@ sta retries,u pshs cc pshs u,y,x,b,a,cc + IFNE atari + lda D.ATARIFLAGS + ora #DWIOSEMA + sta D.ATARIFLAGS + ENDC * Send out op code and 3 byte LSN lda PD.DRV,y cmpa #NumDrvs @@ -340,6 +375,11 @@ ora #Carry sta 9,s WritEx leas 5,s + IFNE atari + lda D.ATARIFLAGS + anda #^DWIOSEMA + sta D.ATARIFLAGS + ENDC puls y,u puls cc,pc @@ -373,6 +413,11 @@ * B = error code * GetStat + IFNE atari + lda D.ATARIFLAGS + ora #DWIOSEMA + sta D.ATARIFLAGS + ENDC lda #OP_GETSTA clrb clear Carry pshs cc and push CC on stack @@ -391,6 +436,11 @@ ENDC jsr 6,u leas 3,s + IFNE atari + lda D.ATARIFLAGS + anda #^DWIOSEMA + sta D.ATARIFLAGS + ENDC puls cc,pc emod