PR#3 PREFIX /A2OSX.SRC LOMEM $900 INC 1 AUTO 6 .LIST OFF */-------------------------------------- * #GetDevByIDA * ##IN: * A = DevID * ##OUT: * CC = OK, CS = ERROR * Y,A = DEVSLOT * note: X Unmodified *\-------------------------------------- K.GetDevByIDA cmp DevMgr.Count bcs K.GetDevDNF pha save ID asl asl asl adc #DevMgr.Table tay pla php lsr lsr lsr plp adc /DevMgr.Table rts CC */-------------------------------------- * #GetDevByNameYA * ##IN: * Y,A = Ptr to device name (PStr) * ##OUT: * CC = OK, CS = ERROR * X = DEVID * Y,A = DEVSLOT *\-------------------------------------- K.GetDevByNameYA >STYA ZPPtr1 >LDYAI DevMgr.Table+S.DEV.F >STYA ZPPtr2 ldx #0 .1 lda (ZPPtr2) and #S.DEV.F.LEN cmp (ZPPtr1) bne .3 tay .2 lda (ZPPtr1),y cmp (ZPPtr2),y bne .3 dey bne .2 lda ZPPtr2 sec sbc #S.DEV.F tay lda ZPPtr2+1 sbc /S.DEV.F clc rts .3 lda ZPPtr2 clc adc #S.DEV sta ZPPtr2 bcc .4 inc ZPPtr2+1 .4 inx cpx DevMgr.Count bne .1 K.GetDevDNF lda #MLI.ERR.NODEV CS from cpx/beq rts */-------------------------------------- * #GetDevStatusA * ##IN: * A = DevID * ##OUT: * CC = OK, CS = ERROR * Y,A = Ptr to S.DEVINFO *\-------------------------------------- K.GetDevStatusA jsr K.GetDevByIDA bcs K.GetDevDNF >STYA ZPPtr1 ldx #DEVMGR.STATUS jmp (ZPPtr1) */-------------------------------------- * #MkNodYA * return a hFile for a given Device Name * ##IN: * Y,A=DevName * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME bcs .9 >STYA pDev stx .1+1 ldy #S.DEV.S lda (pDev),y bit #S.DEV.S.BLOCK bne .99 lda (pDev) sta .2+1 sta .4+1 ldy #1 lda (pDev),y sta .3+1 sta .4+2 txa Pass DEV.ID to OPEN ldx #DEVMGR.OPEN jsr .4 bcs .9 >PUSHWI S.NODE.DEV >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs .9 >STYA ZPPtr3 Ptr3=S.NODE ldy #S.NODE.T lda #S.NODE.T.CDEV sta (ZPPtr3),y iny #S.NODE.DEV.ID .1 lda #$ff Self Modified sta (ZPPtr3),y iny #S.NODE.DEV.JMP .2 lda #$ff sta (ZPPtr3),y iny ##S.NODE.DEV.JMP+1 .3 lda #$ff sta (ZPPtr3),y txa clc .9 rts .99 lda #MLI.ERR.IO sec rts .4 jmp $ffff */-------------------------------------- * #MkNodA * return a hFile for a given Socket * ##IN: * A=hSocket * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- K.MkNodA sta .1+1 >PUSHWI S.NODE.SSOCK >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs .9 >STYA ZPPtr1 ldy #S.NODE.T lda #S.NODE.T.SSOCK sta (ZPPtr1),y ldy #S.NODE.SSOCK.HSKT .1 lda #$ff sta (ZPPtr1),y txa .9 rts */-------------------------------------- * #MKFIFO * return a S.FILE to a new FIFO * ##IN: * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- K.MKFIFO >PUSHWI 256 >PUSHBI 0 jsr K.GetMem bcs .99 stx .1+1 save FIFO buffer >PUSHWI S.NODE.FIFO >PUSHBI S.MEM.F.INIT0 jsr K.GetMem bcs .9 >STYA ZPPtr1 ldy #S.NODE.T lda #S.NODE.T.FIFO sta (ZPPtr1),y iny S.NODE.FIFO.hMem .1 lda #$ff Self Modified sta (ZPPtr1),y txa clc rts .9 pha save error code lda .1+1 get back FIFO buffer jsr K.FreeMemA pla sec .99 rts *-------------------------------------- MAN SAVE SYS/KERNEL.S.DEV LOAD SYS/KERNEL.S ASM