Mercurial > hg > Members > kono > os9 > sbc09
view os9/level2/vrbf.asm @ 45:07c84761da6f
dd vrbf asm code
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Jul 2018 16:21:47 +0900 |
parents | |
children | ec9f494497e1 |
line wrap: on
line source
******************************************************************** * Virtual RBF - Random Block File Manager * nam VRBF ttl VRandom Block File Manager ifp1 use defsfile endc rev set $00 ty set FlMgr IFNE H6309 lg set Obj6309 ELSE lg set Objct ENDC tylg set ty+lg atrv set ReEnt+rev edition set 37 org $00 size equ . mod eom,name,tylg,atrv,start,size name fcs /VRBF/ fcb edition *L0012 fcb DRVMEM **************************** * * Main entry point for RBF * * Entry: Y = Path descriptor pointer * U = Register stack pointer start bra Create nop lbra Open lbra MakDir lbra ChgDir lbra Delete lbra Seek lbra Read lbra Write lbra ReadLn lbra WriteLn lbra GetStat lbra SetStat lbra Close * * I$Create Entry Point * * Entry: A = access mode desired (0 read, 1 write, 2 update, bit 4 for exex) * B = file attributes * X = address of the pathlist * * Exit: A = pathnum * X = last byte of pathlist address * * Error: CC Carry set * B = errcode * Create pshs y,u Preserve path desc ptr sta PD.MOD,y bsr setuppd stb 4,u put file attribute ldb #$d0 stb ,u ldb ,u beq ok00 err00 orcc #$1 ok00 pull y,u,pc setuppd pshs x ldu #$FFc0 vdisk port lda <PD.DRV,y sta 1,u ldx <D.Proc get process pointer cmpx <D.SysPrc beq sysmode lda #0 sysmode sta 2,u lda PD.MOD,y bita #EXEC. bne usechx lda P$DIO+5,x get curwdir #pdnumber bra s1 usechx lda P$DIO+11,x get curxdir #pdnumber s1 sta 3,u ldy PD.PD,y path number and mode puls x,pc * * I$Open Entry Point * * Entry: A = access mode desired * X = address of the pathlist * * Exit: A = pathnum * X = last byte of pathlist address * * Error: CC Carry set * B = errcode * Open pshs y,u sta PD.MOD,y bsr setuppd ldb #$d1 stb ,u ldb ,u beq ok00 bra er00 * * I$MakDir Entry Point * * Entry: X = address of the pathlist * * Exit: X = last byte of pathlist address * * Error: CC Carry set * B = errcode * MakDir pshs y,u sta PD.MOD,y bsr setuppd ldb #$d2 stb ,u ldb ,u beq ok00 bra er00 * * I$Close Entry Point * * Entry: A = path number * * Exit: * * Error: CC Carry set * B = errcode * Close pshs y,u bsr setuppd ldb #$db stb ,u ldb ,u beq ok00 bra er00 * * I$ChgDir Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * ChgDir pshs y,u bsr setuppd ldb #$d4 stb ,u ldb ,u bne er00 ldb PD.MOD,y get current file mode bitb #UPDAT. read or write mode? beq CD30D no, skip ahead * Change current data dir sta P$DIO+5,x CD30D bitb #EXEC. is it execution dir? beq CD31C no, skip ahead * Change current execution directory sta P$DIO+11,x bra ok00 * * I$Delete Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * * Delete pshs y,u bsr setuppd ldb #$d5 stb ,u ldb ,u beq ok00 bra er00 * * I$Seek Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * Seek pshs y,u bsr setuppd ldb #$d6 stb ,u ldb ,u beq ok00 bra er00 * * I$ReadLn Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * ReadLn pshs y,u bsr setuppd ldb #$d7 stb ,u ldb ,u beq ok00 bra er00 * * I$Read Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * Read pshs y,u bsr setuppd ldb #$d8 stb ,u ldb ,u beq ok00 bra er00 beq Read4BB no, allow it bsr Read4BC do reading * * I$WritLn Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * WriteLn pshs y,u bsr setuppd ldb #$d9 stb ,u ldb ,u beq ok00 bra er00 * * I$Write Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * Write pshs y,u bsr setuppd ldb #$da stb ,u ldb ,u beq ok00 bra er00 * * I$GetStat Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * GetStat pshs y,u ldb R$B,u get function code bsr setuppd ldb #$dc stb ,u ldb ,u beq ok00 bra er00 * * I$SetStat Entry Point * * Entry: * * Exit: * * Error: CC Carry set * B = errcode * SetStat pshs y,u ldb R$B,u get function code bsr setuppd ldb #$dd stb ,u ldb ,u beq ok00 bra er00 emod eom equ * end