# HG changeset patch # User boisy # Date 1267204379 0 # Node ID adfd8492a45531bf48575cd26565878b881eb4e9 # Parent 0ae4857f8f82acf34d5fbb388d05380e7897e7fe Updated diff -r 0ae4857f8f82 -r adfd8492a455 level1/modules/rfm.asm --- a/level1/modules/rfm.asm Fri Feb 26 16:05:19 2010 +0000 +++ b/level1/modules/rfm.asm Fri Feb 26 17:12:59 2010 +0000 @@ -57,28 +57,28 @@ open ldb #DW.open -create1 pshs u,y ; RD Regs - - ldx PD.DEV,y ; to our static storage - pshs x ; PD.DEV PD Regs - -* put path # on stack - lda ,y - sta V.PATHNUM,x - pshs a ; p# PD.DEV PD Regs - -* put rfm op and DW op on stack - - lda #OP_VFM - pshs d ; DWOP RFMOP p# PD.DEV PD Regs +create1 + ldx PD.DEV,y ; get ptr to our static storage + pshs b,x,y,u ; save all on stack * TODO lets not create multiple buffers when multiple open/create on same path * get system mem ldd #256 os9 F$SRqMem ; ask for D bytes (# bytes server said is coming) - ldx 3,s ; PD.DEV + puls a + bcs open2 stu V.BUF,x +* put path # on stack + ldb PD.PD,y + stb V.PATHNUM,x + pshs cc + pshs d ; p# PD.DEV PD Regs + +* put rfm op and DW op on stack + lda #OP_VFM + pshs a ; DWOP RFMOP p# PD.DEV PD Regs + leax ,s ; point X to stack ldy #3 ; 3 bytes to send @@ -88,6 +88,7 @@ ldu >D.DWSubAddr endc + orcc #IntMasks jsr 6,u leas 3,s ;clean stack PD.DEV PD Regs @@ -100,13 +101,13 @@ ldx 0 - pshs d ;xfersz PD.DEV PD Regs +go_on pshs d ;xfersz PD.DEV PD Regs * load data from server into mem block - ldx 2,s ; pd.dev + ldx 3,s ; pd.dev ldx V.BUF,x ldy ,s ;xfersz jsr 3,u @@ -234,6 +236,7 @@ * move from our mem to caller puls y ;Y = byte count (already set?) - PD.DEV PD Regs + puls cc ldx 4,s ldu R$X,x ; U = caller's X = dest ptr @@ -254,16 +257,13 @@ *ldy xfersz,pc ; Y is supposed to be set to bytes read.. do we need to set this in the caller's regs? bra readln2 -readln1 ldb #E$EOF - ldy #0 ; Y should be 0 if we didnt read any? in callers regs? - orcc #1 ; set error bit +readln1 + puls cc + comb + ldb #E$EOF leas 2,s ; clean stack down - readln2 puls y,u,pc -*ldu origu,pc ; put U back to the entry value.. needed? -* rts - writln lda #DW.writln lbra sendit