diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index f9c94d8e..1acdd543 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -158,7 +158,7 @@ SEEK.END .EQ $02 *-------------------------------------- * A2osX.SYSCALL Functions Indexes *-------------------------------------- -SYS.GetMemStat .EQ $00 +* .EQ $00 SYS.ChMod .EQ $02 SYS.FStat .EQ $04 SYS.Stat .EQ $06 @@ -215,8 +215,8 @@ SYS.FPrintF .EQ $5C * .EQ $60 SYS.ChTyp .EQ $62 -SYS.LoadFile .EQ $64 -SYS.LoadTxtFile .EQ $66 +* .EQ $64 +* .EQ $66 * .EQ $68 * .EQ $6A @@ -256,9 +256,9 @@ SYS.ExecV .EQ $A2 * .EQ $A4 SYS.Kill .EQ $A6 -* .EQ $A8 -* .EQ $AA -* .EQ $AC +SYS.LoadFile .EQ $A8 +SYS.LoadTxtFile .EQ $AA +SYS.GetMemStat .EQ $AC * .EQ $AE SYS.Args2ArgV .EQ $B0 diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index a5324007..fea06e08 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -158,8 +158,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >PUSHBI O.RDONLY >LDYAI K.Buf256 - ldx #SYS.LoadFile - jsr K.SYSCALL2.BANK BANK1!!! + jsr K.LoadFile bcs BIN.Load.Cleanup.RTS Error Loading file stx BIN.hMem save hMem diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 24d972d6..3fc06a36 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -110,7 +110,7 @@ K.Buf256 .EQ $1100 K.IOBuf .EQ $1200 *-------------------------------------- Mem.MHiMem .EQ A2osX.SYSCALL -Mem.XHiMem .EQ $C000 +Mem.XHiMem .EQ A2osX.SYSCALL DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC *-------------------------------------- H.BIN.T .EQ 0 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 888e859e..1e7723a5 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -26,128 +26,6 @@ K.ChTyp jsr PFT.CheckPathYA .99 >RET 1 discard filetype */-------------------------------------- -* # LoadTxtFile -* Load TXT a file in memory (with ending 0) -* ## C -* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );` -* ## ASM -* **In:** -* `>PUSHW auxtype` -* `>PUSHB ftype` -* `>PUSHB flags` -* `>LDYA filename` -* `>SYSCALL loadtxtfile` -* ## RETURN VALUE -* Y,A = File Length (without ending 0) -* X = hMem of Loaded File -*\-------------------------------------- - .DUMMY - .OR ZPTMP 5 Bytes -FIO.bTXT .BS 1 -FIO.hFILE .BS 1 -FIO.MemPtr .BS 2 -FIO.hMem .BS 1 - .ED -*-------------------------------------- -K.LoadTxtFile sec - .HS 90 BCC -*/-------------------------------------- -* # LoadFile -* Load a file in memory -* ## C -* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );` -* ## ASM -* **In:** -* `>PUSHW auxtype` -* `>PUSHB ftype` -* `>PUSHB flags` -* `>LDYA filename` -* `>SYSCALL loadfile` -* ## RETURN VALUE -* Y,A = File Length -* X = hMem of Loaded File -*\-------------------------------------- -K.LoadFile clc - - ror FIO.bTXT - jsr K.FOpen - bcs .9 - -.12 sta FIO.hFILE - - pha - >PUSHWI K.S.Stat - pla - jsr K.FStat - bcs .11 - - lda K.S.Stat+S.STAT.SIZE+3 - ora K.S.Stat+S.STAT.SIZE+2 - bne .10 - - >LDYA K.S.Stat+S.STAT.SIZE - - bit FIO.bTXT Add 1 to buffer size for ending 0 - bpl .1 - iny - bne .1 - inc - bne .1 - -.10 lda #E.FTB -.11 bra .99 - -.1 jsr K.GetMem - bcs .99 - >STYA FIO.MemPtr - stx FIO.hMem - - >PUSHW K.S.Stat+S.STAT.SIZE - >PUSHW FIO.MemPtr - lda FIO.hFILE - jsr K.FRead - bcc .2 - - pha - lda FIO.hMem - jsr K.FreeMem - pla - -.99 pha - lda FIO.hFILE - jsr K.FClose - pla - sec -.9 rts - -.2 sty .7+1 - sta .8+1 - - bit FIO.bTXT - bpl .5 - - pha set ending 0 - tya - -* clc - - adc FIO.MemPtr - sta .4+1 - - pla - adc FIO.MemPtr+1 - sta .4+2 - -.4 stz $ffff Self Modified - -.5 jsr .99 close file - -.7 ldy #$ff SELFMODIFIED -.8 lda #$ff SELFMODIFIED - ldx FIO.hMem - clc - rts -*/-------------------------------------- * # ChOwn * **In:** * PUSHW = mod diff --git a/SYS/KERNEL.S.GPX.txt b/SYS/KERNEL.S.GPX.txt new file mode 100644 index 00000000..af670403 --- /dev/null +++ b/SYS/KERNEL.S.GPX.txt @@ -0,0 +1,20 @@ +NEW + AUTO 3,1 +*-------------------------------------- +* SYSCALL (AUXLC to AUXLC) +* Used by user & kernel for inter bank Calls +* In: +* X = SYSfnc.Index +* Y,A = free for Inline param +*-------------------------------------- + sta CLRREADAUX + sta CLRWRITEAUX + jsr K.SYSCALL2 + sta SETREADAUX + sta SETWRITEAUX + rts +*-------------------------------------- +MAN +SAVE USR/SRC/SYS/KERNEL.S.GPX +LOAD USR/SRC/SYS/KERNEL.S +ASM diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index aca0f322..8588bf9f 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -46,6 +46,15 @@ Kernel.Init2 sei jsr Kernel.Move + >LDYAI A2osX.GPX + >STYA A1L Src Start Address (MAIN) + >LDYAI A2osX.D1 + >STYA A2L Src End Address (MAIN) + >LDYAI A2osX.SYSCALL + >STYA A4L Dst Address (AUX) + sec Main To Aux + jsr AuxMove + sta SETALTZP bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 83113a14..d82f9e6b 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -1,71 +1,6 @@ NEW AUTO 3,1 *-------------------------------------- -IO.OPEN.REG >MLICALL MLIGETFILEINFO - bcc IO.OPEN.REG.E Already Exists - - bit IO.Open.FLAGS Create if not exists ? - bpl IO.OPEN.RTS No, return MLI error - - ldx #2 Yes, Create... - -.1 lda IO.Open.TYPE,x - sta K.MLI.PARAMS+4,x File type,Aux type - dex - bpl .1 - - lda #S.FI.ST.STD - - jsr IO.MLI.CREATE - bcs IO.OPEN.RTS - -IO.OPEN.REG.E ldx #0 - jsr IO.MkFD - bcs IO.OPEN.RTS - - jsr IO.MLI.OPEN - bcs IO.OPEN.ERR - - lda IO.Open.FLAGS - bit #O.WRONLY - beq .20 Write mode ? - - and #O.APPEND Append ? - bne .11 yes, go to end of file - - stz K.MLI.PARAMS+2 - stz K.MLI.PARAMS+3 - stz K.MLI.PARAMS+4 - >MLICALL MLISETEOF no, reset size to 0 - bra .21 - -.11 >MLICALL MLIGETEOF - bcs IO.OPEN.ERR - - >MLICALL MLISETMARK -.21 bcs IO.OPEN.ERR - -.20 lda IO.Open.FLAGS - and #O.TEXT Text Mode ? - beq .8 - - lda #$FF - sta K.MLI.PARAMS+2 - lda #C.CR - sta K.MLI.PARAMS+3 - >MLICALL MLINEWLINE - bcs IO.OPEN.ERR - -.8 lda IO.hFD -IO.OPEN.RTS rts - -IO.OPEN.ERR pha Save Error Code - lda IO.hFD - jsr K.Close - pla - sec - rts -*-------------------------------------- IO.OPEN.CDEV IO.OPEN.BDEV jsr K.IOCTL.GetPDrv @@ -358,9 +293,7 @@ IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF * clc .9 rts *-------------------------------------- -IO.DEVDIR .EQ * "/DEV/" -*-------------------------------------- -STAT.FIFO .AS "/DEV/FIFO" +IO.DEV.FIFO .AS "/DEV/FIFO" *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.IO diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 939584ef..d8576952 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -5,7 +5,7 @@ NEW *-------------------------------------- * Bank 1 *-------------------------------------- -K.SYSCALL .DA K.GetMemStat $00 +K.SYSCALL .DA 0 $00 .DA K.ChMod .DA K.FStat .DA K.Stat @@ -61,8 +61,8 @@ K.SYSCALL .DA K.GetMemStat $00 .DA 0 $60 .DA K.ChTyp - .DA K.LoadFile - .DA K.LoadTxtFile + .DA 0 + .DA 0 .DA 0 .DA 0 .DA K.ChOwn @@ -101,9 +101,9 @@ K.SYSCALL .DA K.GetMemStat $00 .DA K.ExecV .DA 0 .DA K.Kill - .DA 0 - .DA 0 - .DA 0 + .DA K.LoadFile + .DA K.LoadTxtFile + .DA K.GetMemStat .DA 0 .DA K.Args2ArgV $B0 @@ -381,11 +381,11 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA #RRAMWRAMBNK2 .DA #$80 - .DA #RRAMWRAMBNK2 $D0 + .DA #$C0 $D0 : PWD .DA #$80 - .DA #RRAMWRAMBNK2 + .DA #$C0 PWD .DA #$80 - .DA #RRAMWRAMBNK2 + .DA #$C0 PWD .DA #$80 .DA #RRAMWRAMBNK2 .DA #$80 @@ -415,21 +415,21 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA #$C0 FreeStkObj .DA #$80 *-------------------------------------- - .DA #0 $F0 : SLIST + .DA #$C0 $F0 : SLIST .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 - .DA #0 + .DA #$C0 .DA #$80 *-------------------------------------- K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index 43f0cdae..783e1854 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -4,7 +4,6 @@ NEW * http://6502.org/source/integers/32muldiv.htm * http://nparker.llx.com/a2/mult.html *-------------------------------------- -*-------------------------------------- * ARG32*ACC32->TMP32 *-------------------------------------- MATH.MUL32 jsr MATH.TMP32ZERO diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index c1a7f6c6..8fd94481 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -275,7 +275,7 @@ K.FreeMem.ERR phx jsr K.SYSCALL2.BANK plx lda #E.INVH - >DEBUG + >DEBUGOA sec rts *-------------------------------------- @@ -393,121 +393,6 @@ Mem.DecRefCnt ldy #S.MEM.REFCNT dec sta (ZPMemMgrSPtr),y rts -*-------------------------------------- -ZPSListKeyID .EQ ZPMEMMGR+6 -ZPSListDataPtr .EQ ZPMEMMGR+8 -ZPSListDataLen .EQ ZPMEMMGR+10 -ZPSListIBlkPtr .EQ ZPMEMMGR+12 -ZPSListDBlkPtr .EQ ZPMEMMGR+14 -*/-------------------------------------- -* # SListGetData -* ## ASM -* `PUSHW DataOfs` -* `PUSHW DataLen` -* `PUSHW DataPtr` -* `PUSHW KeyID` -* `lda hSList` -* `>SYSCALL SListGetData` -* ## RETURN VALUE -* Y,A = Byte Count -* X = hMem (if DataPtr = 0) -*\-------------------------------------- -K.SListGetData pha - >PULLW ZPSListKeyID - >PULLW ZPSListDataPtr - >PULLW ZPSListDataLen - >PULLW ZPMemMgrSize - pla - bra K.SListFree -*/-------------------------------------- -* # SListAddData -* ## ASM -* `PUSHW DataLen` -* `PUSHW DataPtr` -* `PUSHW KeyID` -* `lda hSList` -* `>SYSCALL SListAddData` -* ## RETURN VALUE -*\-------------------------------------- -K.SListAddData -*/-------------------------------------- -* # SListSetData -* ## ASM -* `PUSHW DataLen` -* `PUSHW DataPtr` -* `PUSHW KeyID` -* `lda hSList` -* `>SYSCALL SListSetData` -* ## RETURN VALUE -*\-------------------------------------- -K.SListSetData pha - >PULLW ZPSListKeyID - >PULLW ZPSListDataPtr - >PULLW ZPSListDataLen - pla - bra K.SListFree -*/-------------------------------------- -* # SListGetByID -* ## ASM -* `PUSHW KeyPtr` -* `PUSHW KeyID` -* `lda hSList` -* `>SYSCALL SListGetByID` -* ## RETURN VALUE -* Y,A = Next KeyID -*\-------------------------------------- -K.SListGetByID pha - >PULLW ZPSListKeyID - >PULLW ZPSListDataPtr - pla - bra K.SListFree -*/-------------------------------------- -* # SListNewKey -* ## ASM -* `PUSHW KeyPtr` -* `lda hSList` -* `>SYSCALL SListNewKey` -* ## RETURN VALUE -* Y,A = KeyID -* X = KeyLen -*\-------------------------------------- -K.SListNewKey -*/-------------------------------------- -* # SListLookup -* ## ASM -* `PUSHW KeyPtr` -* `lda hSList` -* `>SYSCALL SListLookup` -* ## RETURN VALUE -* Y,A = KeyID -* X = Key Length -*\-------------------------------------- -K.SListLookup pha - >PULLW ZPSListDataPtr - pla -*/-------------------------------------- -* # SListNew -* ## ASM -* `>SYSCALL SListNew` -* ## RETURN VALUE -* A=hSList -*\-------------------------------------- -K.SListNew -*/-------------------------------------- -* # SListFree -* ## ASM -* `lda hSList` -* `>SYSCALL SListFree` -* ## RETURN VALUE -*\-------------------------------------- -K.SListFree sta SETREADAUX - sta SETWRITEAUX - - jsr X.SLIST - - sta CLRREADAUX - sta CLRWRITEAUX - rts */-------------------------------------- * # NewStkObj * Y,A = Size Requested @@ -595,15 +480,6 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 * (X,Y unmodified) *\-------------------------------------- *-------------------------------------- -* in Y,A = buf size -*-------------------------------------- -MEM.GetMainBuf sta CLRREADAUX - sta CLRWRITEAUX - jsr K.GetMem - sta SETREADAUX - sta SETWRITEAUX - rts -*-------------------------------------- MEM.GetKrnlBuf pha tya clc @@ -616,55 +492,21 @@ MEM.GetKrnlBuf pha cpx #DevMgr.HiMem pha sbc /DevMgr.HiMem - bcs .98 No More Room... + pla + bcs .99 No More Room... ldy DevMgr.Free stx DevMgr.Free ldx DevMgr.Free+1 - pla sta DevMgr.Free+1 txa * clc rts -.98 pla .99 lda #E.OOM * sec rts -*/-------------------------------------- -* # GetMemStat -* **In:** -* Y,A = Ptr to 24 bytes buffer -* ## RETURN VALUE -* Buffer filled with memory stats -*\-------------------------------------- -K.GetMemStat >STYA ZPPtr1 - - ldy #23 - ldx #7 - -.1 lda DevMgr.Stat,x - sta (ZPPtr1),y - dey - dex - bpl .1 - - sta SETREADAUX - - jsr .2 - - sta CLRREADAUX - -.2 ldx #7 - -.3 lda Mem.Table,x - sta (ZPPtr1),y - dey - dex - bpl .3 - - rts *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.MEM diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 0154c9f2..6d95897b 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -75,13 +75,13 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem .90 pha save error code >PUSHBI 2 lda .8+1 - >SYSCALL2 Kill + jsr K.Kill pla get back error code sec rts .8 lda #$ff SELF MODIFIED - +* clc .9 rts *-------------------------------------- * PS.CreateChild @@ -226,7 +226,7 @@ PS.CreateChild ldx #0 .9 pha >PUSHBI 2 lda CORE.LastPSID - >SYSCALL2 Kill + jsr K.Kill pla sec rts @@ -582,7 +582,7 @@ PS.AddYAp12ArgSize K.Kill cmp #0 beq .99 CS - sta K.Kill.PID + sta .1+1 jsr CORE.GetPSByID bcs .99 @@ -618,23 +618,17 @@ K.Kill.2 ldy #S.PS.hSID lda S.Table.hSession-1,x jsr K.FreeMem - ldy #S.PS.hSS - jsr .8 + ldx #5 - ldy #S.PS.hDS - jsr .8 - - ldy #S.PS.hCS - jsr .8 - - ldy #S.PS.hARGV - jsr .8 +.11 ldy .10,x - ldy #S.PS.hENV - jsr .8 + lda (ZPPtr1),y + bne .12 - ldy #S.PS.hCWD - jsr .8 + jsr K.FreeMem + +.12 dex + bpl .11 lda (ZPPtr1) bit #S.PS.F.CLOSEONX @@ -645,7 +639,7 @@ K.Kill.2 ldy #S.PS.hSID ldx #SYS.fclose jsr K.SYSCALL2.BANK -.1 lda K.Kill.PID +.1 lda #$ff SELF MODIFIED ldx #0 @@ -655,17 +649,175 @@ K.Kill.2 ldy #S.PS.hSID inx cpx CORE.PSCount bne .2 + bra * .3 stz PS.Table.PID,x lda PS.TABLE.hPS,x stz PS.TABLE.hPS,x -.4 jmp K.FreeMem + jmp K.FreeMem -.8 lda (ZPPtr1),y - bne .4 -.9 rts +.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS + .DA #S.PS.hARGV,#S.PS.hENV,#S.PS.hCWD +*/-------------------------------------- +* # LoadTxtFile +* Load TXT a file in memory (with ending 0) +* ## C +* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );` +* ## ASM +* **In:** +* `>PUSHW auxtype` +* `>PUSHB ftype` +* `>PUSHB flags` +* `>LDYA filename` +* `>SYSCALL loadtxtfile` +* ## RETURN VALUE +* Y,A = File Length (without ending 0) +* X = hMem of Loaded File +*\-------------------------------------- + .DUMMY + .OR ZPTMP 5 Bytes +FIO.bTXT .BS 1 +FIO.hFILE .BS 1 +FIO.MemPtr .BS 2 +FIO.hMem .BS 1 + .ED *-------------------------------------- -K.Kill.PID .BS 1 +K.LoadTxtFile sec + .HS 90 BCC +*/-------------------------------------- +* # LoadFile +* Load a file in memory +* ## C +* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );` +* ## ASM +* **In:** +* `>PUSHW auxtype` +* `>PUSHB ftype` +* `>PUSHB flags` +* `>LDYA filename` +* `>SYSCALL loadfile` +* ## RETURN VALUE +* Y,A = File Length +* X = hMem of Loaded File +*\-------------------------------------- +K.LoadFile clc + + ror FIO.bTXT + ldx #SYS.FOpen + jsr K.SYSCALL2.BANK + + bcs .9 + +.12 sta FIO.hFILE + + pha + >PUSHWI K.S.Stat + pla + ldx #SYS.FStat + jsr K.SYSCALL2.BANK + bcs .11 + + lda K.S.Stat+S.STAT.SIZE+3 + ora K.S.Stat+S.STAT.SIZE+2 + bne .10 + + >LDYA K.S.Stat+S.STAT.SIZE + + bit FIO.bTXT Add 1 to buffer size for ending 0 + bpl .1 + iny + bne .1 + inc + bne .1 + +.10 lda #E.FTB +.11 bra .99 + +.1 jsr K.GetMem + bcs .99 + >STYA FIO.MemPtr + stx FIO.hMem + + >PUSHW K.S.Stat+S.STAT.SIZE + >PUSHW FIO.MemPtr + lda FIO.hFILE + ldx #SYS.FRead + jsr K.SYSCALL2.BANK + bcc .2 + + pha + lda FIO.hMem + jsr K.FreeMem + pla + +.99 pha + lda FIO.hFILE + ldx #SYS.FClose + jsr K.SYSCALL2.BANK + pla + sec +.9 rts + +.2 sty .7+1 + sta .8+1 + + bit FIO.bTXT + bpl .5 + + pha set ending 0 + tya + +* clc + + adc FIO.MemPtr + sta .4+1 + + pla + adc FIO.MemPtr+1 + sta .4+2 + +.4 stz $ffff Self Modified + +.5 jsr .99 close file + +.7 ldy #$ff SELFMODIFIED +.8 lda #$ff SELFMODIFIED + ldx FIO.hMem + clc + rts +*/-------------------------------------- +* # GetMemStat +* **In:** +* Y,A = Ptr to 24 bytes buffer +* ## RETURN VALUE +* Buffer filled with memory stats +*\-------------------------------------- +K.GetMemStat >STYA ZPPtr1 + + ldy #23 + ldx #7 + +.1 lda DevMgr.Stat,x + sta (ZPPtr1),y + dey + dex + bpl .1 + + sta SETREADAUX + + jsr .2 + + sta CLRREADAUX + +.2 ldx #7 + +.3 lda Mem.Table,x + sta (ZPPtr1),y + dey + dex + bpl .3 + + rts *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.PS diff --git a/SYS/KERNEL.S.PWD.txt b/SYS/KERNEL.S.PWD.txt deleted file mode 100644 index 22858216..00000000 --- a/SYS/KERNEL.S.PWD.txt +++ /dev/null @@ -1,114 +0,0 @@ -NEW - AUTO 3,1 -*/-------------------------------------- -* # GetPWUID -* ## C -* `int getpwuid(short int uid, S.PW* passwd );` -* ## ASM -* `>PUSHW passwd` -* `lda uid` -* `>SYSCALL getpwuid` -* ## RETURN VALUE -*\-------------------------------------- -K.GetPWUID -*/-------------------------------------- -* # GetPWName -* ## C -* `int getpwname(const char* name, S.PW* passwd );` -* ## ASM -* `>PUSHW passwd` -* `>LDYA name` -* `>SYSCALL getpwname` -* ## RETURN VALUE -*\-------------------------------------- -K.GetPWName jsr SHARED.SPtr1PPtr2 - - bra K.PutPW.1 -*/-------------------------------------- -* # PutPW -* ## C -* `int putpw( S.PW* passwd );` -* ## ASM -* `>LDYA passwd` -* `>SYSCALL putpw` -* ## RETURN VALUE -*\-------------------------------------- -K.PutPW >STYA ZPPtr2 - -K.PutPW.1 sta SETREADAUX - sta SETWRITEAUX - - jsr X.PWD - - sta CLRREADAUX - sta CLRWRITEAUX - bcs .9 - - lda PWD.bDirty - beq .9 - - lda PWD.DBPtr - sta A1L - clc - adc PWD.DBSize - sta A2L - - lda PWD.DBPtr+1 - sta A1L+1 - adc PWD.DBSize+1 - sta A2L+1 - - >LDYA PWD.DBSize - jsr K.getmem - bcs .9 - - stx .8+1 - >STYA A4L Save Destination Address in MAIN - - clc Aux To Main - jsr AuxMove - - >PUSHWZ Aux type - >PUSHBI S.FI.T.TXT - >PUSHBI O.WRONLY+O.CREATE - >LDYAI PWD.FILE - ldx #SYS.FOpen - jsr K.SYSCALL2.BANK - bcc .1 - - pha - jsr .8 - pla - sec -.9 rts - -.1 sta .7+1 - - >PUSHW PWD.DBSize - lda .8+1 - jsr K.getmemptr - >PUSHYA - lda .7+1 - ldx #SYS.FWrite - jsr K.SYSCALL2.BANK - bcc .2 - - pha - jsr .7 - pla - sec - rts - -.2 stz PWD.bDirty - -.7 lda #$ff SELF MODIFIED - ldx #SYS.fclose - jsr K.SYSCALL2.BANK - -.8 lda #$ff - jmp K.freemem SELF MODIFIED -*-------------------------------------- -MAN -SAVE USR/SRC/SYS/KERNEL.S.PWD -LOAD USR/SRC/SYS/KERNEL.S -ASM diff --git a/SYS/KERNEL.S.PWDX.txt b/SYS/KERNEL.S.PWDX.txt index a844948b..2b71fb39 100644 --- a/SYS/KERNEL.S.PWDX.txt +++ b/SYS/KERNEL.S.PWDX.txt @@ -1,11 +1,6 @@ NEW AUTO 3,1 *-------------------------------------- -X.PWD jmp (.1-SYS.GetPWUID,x) -.1 .DA PWD.GetPWUID - .DA PWD.GetPWName - .DA PWD.PutPW -*-------------------------------------- * ZPPtr1 : UID / pName (Input) * ZPPtr2 : pPW (Output) * ZPPtr3 : pDB @@ -13,7 +8,21 @@ X.PWD jmp (.1-SYS.GetPWUID,x) * ....\CR * \0 *-------------------------------------- -PWD.GetPWUID lda PWD.hDB +*/-------------------------------------- +* # GetPWUID +* ## C +* `int getpwuid(short int uid, S.PW* passwd );` +* ## ASM +* `>PUSHW passwd` +* `lda uid` +* `>SYSCALL getpwuid` +* ## RETURN VALUE +*\-------------------------------------- +K.GetPWUID sta ZPPtr1+1 + jsr SHARED.PullYA + >STYA ZPPtr2 + + lda PWD.hDB beq PWD.GetPW.9 jsr K.GetmemPtr @@ -50,16 +59,26 @@ PWD.GetPW.9 lda #E.IPWDDB PWD.GetPW.99 lda #E.IUSR sec PWD.GetPW.RTS rts -*-------------------------------------- -PWD.GetPWName lda PWD.hDB +*/-------------------------------------- +* # GetPWName +* ## C +* `int getpwname(const char* name, S.PW* passwd );` +* ## ASM +* `>PUSHW passwd` +* `>LDYA name` +* `>SYSCALL getpwname` +* ## RETURN VALUE +*\-------------------------------------- +K.GetPWName >STYA TXTPTR + jsr SHARED.PullYA + >STYA ZPPtr2 + + lda PWD.hDB beq PWD.GetPW.9 jsr K.GetmemPtr >STYA ZPPtr3 - >LDYA ZPPtr1 - >STYA TXTPTR - ldy #0 jsr SHARED.TXTPTR.GetY beq PWD.GetPW.99 @@ -91,13 +110,21 @@ PWD.GetPWName lda PWD.hDB .8 iny jsr PWD.NextString skip PASSWORD jmp PWD.GetByte get UID +*/-------------------------------------- +* # PutPW +* ## C +* `int putpw( S.PW* passwd );` +* ## ASM +* `>LDYA passwd` +* `>SYSCALL putpw` +* ## RETURN VALUE +*\-------------------------------------- +K.PutPW >STYA ZPPtr2 + >STYA TXTPTR *-------------------------------------- * ZPPtr2 : pPW (Input) * ZPPtr3 : pDB *-------------------------------------- -PWD.PutPW >LDYA ZPPtr2 - >STYA TXTPTR - lda PWD.hDB bne .1 @@ -191,7 +218,71 @@ PWD.PutPW >LDYA ZPPtr2 sec rts *-------------------------------------- -* ZPPtr2 = pPW +PWD.Save lda PWD.bDirty + beq .9 + + lda PWD.DBPtr + sta A1L + clc + adc PWD.DBSize + sta A2L + + lda PWD.DBPtr+1 + sta A1L+1 + adc PWD.DBSize+1 + sta A2L+1 + + >LDYA PWD.DBSize + >SYSCALL2 GetMem + bcs .9 + + stx .8+1 + >STYA A4L Save Destination Address in MAIN + + clc Aux To Main + jsr AuxMove + + >PUSHWZ Aux type + >PUSHBI S.FI.T.TXT + >PUSHBI O.WRONLY+O.CREATE + >LDYAI PWD.FILE + ldx #SYS.FOpen + jsr K.SYSCALL2.BANK + bcc .1 + + pha + jsr .8 + pla + sec +.9 rts + +.1 sta .7+1 + + >PUSHW PWD.DBSize + lda .8+1 + jsr K.getmemptr + >PUSHYA + lda .7+1 + ldx #SYS.FWrite + jsr K.SYSCALL2.BANK + bcc .2 + + pha + jsr .7 + pla + sec + rts + +.2 stz PWD.bDirty + +.7 lda #$ff SELF MODIFIED + ldx #SYS.fclose + jsr K.SYSCALL2.BANK + +.8 lda #$ff + jmp K.freemem SELF MODIFIED +*-------------------------------------- +* PRIVATE *-------------------------------------- PWD.GetUID >LDYA PWD.DBPtr >STYA ZPPtr3 diff --git a/SYS/KERNEL.S.SHARED.txt b/SYS/KERNEL.S.SHARED.txt index 45ea0a04..9f14cd71 100644 --- a/SYS/KERNEL.S.SHARED.txt +++ b/SYS/KERNEL.S.SHARED.txt @@ -154,6 +154,15 @@ SHARED.NextCharPtr2 inc ZPPtr2+1 .8 rts *-------------------------------------- +SHARED.PullYA sta CLRREADAUX + lda (pStack) + tay + inc pStack + lda (pStack) + inc pStack + sta SETREADAUX + rts +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.SHARED LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 45de319f..c5a1df01 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -1,17 +1,36 @@ NEW AUTO 3,1 *-------------------------------------- -X.SLIST jmp (.1-SYS.SListGetData,x) -.1 .DA SLIST.GetData - .DA SLIST.AddData - .DA SLIST.SetData - .DA SLIST.GetByID - .DA SLIST.NewKey - .DA SLIST.Lookup - .DA SLIST.New - .DA SLIST.Free -*-------------------------------------- -SLIST.GetData jsr SLIST.Select +ZPSListKeyID .EQ ZPMEMMGR+6 +ZPSListDataPtr .EQ ZPMEMMGR+8 +ZPSListDataLen .EQ ZPMEMMGR+10 +ZPSListIBlkPtr .EQ ZPMEMMGR+12 +ZPSListDBlkPtr .EQ ZPMEMMGR+14 +*/-------------------------------------- +* # SListGetData +* ## ASM +* `PUSHW DataOfs` +* `PUSHW DataLen` +* `PUSHW DataPtr` +* `PUSHW KeyID` +* `lda hSList` +* `>SYSCALL SListGetData` +* ## RETURN VALUE +* Y,A = Byte Count +* X = hMem (if DataPtr = 0) +*\-------------------------------------- +K.SListGetData sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListKeyID + jsr SHARED.PullYA + >STYA ZPSListDataPtr + jsr SHARED.PullYA + >STYA ZPSListDataLen + jsr SHARED.PullYA + >STYA ZPMemMgrSize + + jsr SLIST.Select jsr SLIST.SkipKey jsr SLIST.GetDataLen @@ -36,7 +55,7 @@ SLIST.GetData jsr SLIST.Select bne .12 >LDYA SLIST.DataLen - jsr MEM.GetMainBuf + >SYSCALL2 GetMem In MAIN Mem bcs .9 stx .82+1 >STYA ZPSListDataPtr @@ -99,8 +118,26 @@ SLIST.GetData jsr SLIST.Select .82 ldx #$ff SELF MODIFIED clc rts -*-------------------------------------- -SLIST.AddData jsr SLIST.Select +*/-------------------------------------- +* # SListAddData +* ## ASM +* `PUSHW DataLen` +* `PUSHW DataPtr` +* `PUSHW KeyID` +* `lda hSList` +* `>SYSCALL SListAddData` +* ## RETURN VALUE +*\-------------------------------------- +K.SListAddData sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListKeyID + jsr SHARED.PullYA + >STYA ZPSListDataPtr + jsr SHARED.PullYA + >STYA ZPSListDataLen + + jsr SLIST.Select jsr SLIST.SkipKey >LDYA SLIST.KeyID Save DataLen location @@ -153,8 +190,26 @@ SLIST.AddData jsr SLIST.Select jsr SLIST.AddBlockByte Make sure 0 follow DATA .9 rts -*-------------------------------------- -SLIST.SetData jsr SLIST.Select +*/-------------------------------------- +* # SListSetData +* ## ASM +* `PUSHW DataLen` +* `PUSHW DataPtr` +* `PUSHW KeyID` +* `lda hSList` +* `>SYSCALL SListSetData` +* ## RETURN VALUE +*\-------------------------------------- +K.SListSetData sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListKeyID + jsr SHARED.PullYA + >STYA ZPSListDataPtr + jsr SHARED.PullYA + >STYA ZPSListDataLen + + jsr SLIST.Select jsr SLIST.SkipKey jsr SLIST.GetDataLen @@ -187,8 +242,24 @@ SLIST.SetData jsr SLIST.Select .9 lda #E.DATALEN sec rts -*-------------------------------------- -SLIST.GetByID jsr SLIST.Select +*/-------------------------------------- +* # SListGetByID +* ## ASM +* `PUSHW KeyPtr` +* `PUSHW KeyID` +* `lda hSList` +* `>SYSCALL SListGetByID` +* ## RETURN VALUE +* Y,A = Next KeyID +*\-------------------------------------- +K.SListGetByID sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListKeyID + jsr SHARED.PullYA + >STYA ZPSListDataPtr + + jsr SLIST.Select jsr SLIST.GetNextByte @@ -217,8 +288,22 @@ SLIST.GetByID jsr SLIST.Select .9 lda #E.NOKEY sec rts -*-------------------------------------- -SLIST.NewKey jsr SLIST.Search +*/-------------------------------------- +* # SListNewKey +* ## ASM +* `PUSHW KeyPtr` +* `lda hSList` +* `>SYSCALL SListNewKey` +* ## RETURN VALUE +* Y,A = KeyID +* X = KeyLen +*\-------------------------------------- +K.SListNewKey sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListDataPtr + + jsr SLIST.Search bcc .99 lda SLIST.KeyLen @@ -254,16 +339,36 @@ SLIST.NewKey jsr SLIST.Search .99 lda #E.DUPKEY sec .9 rts -*-------------------------------------- -SLIST.Lookup jsr SLIST.Search +*/-------------------------------------- +* # SListLookup +* ## ASM +* `PUSHW KeyPtr` +* `lda hSList` +* `>SYSCALL SListLookup` +* ## RETURN VALUE +* Y,A = KeyID +* X = Key Length +*\-------------------------------------- +K.SListLookup sta SLIST.hList + + jsr SHARED.PullYA + >STYA ZPSListDataPtr + + jsr SLIST.Search bcs .9 >LDYA ZPSListKeyID ldx SLIST.KeyLen .9 rts -*-------------------------------------- -SLIST.New >LDYAI 160 40k Max before out of memory!!! +*/-------------------------------------- +* # SListNew +* ## ASM +* `>SYSCALL SListNew` +* ## RETURN VALUE +* A=hSList +*\-------------------------------------- +K.SListNew >LDYAI 160 40k Max before out of memory!!! jsr K.GetMem0 bcs .9 >STYA ZPSListIBlkPtr @@ -281,8 +386,14 @@ SLIST.New >LDYAI 160 40k Max before out of memory!!! .8 lda #$ff SELF MODIFIED .9 rts -*-------------------------------------- -SLIST.Free sta .8+1 +*/-------------------------------------- +* # SListFree +* ## ASM +* `lda hSList` +* `>SYSCALL SListFree` +* ## RETURN VALUE +*\-------------------------------------- +K.SListFree sta .8+1 jsr K.GetMemPtr >STYA .1+1 @@ -299,7 +410,7 @@ SLIST.Free sta .8+1 jmp K.FreeMem *-------------------------------------- * PRIVATE -*-------------------------------------- +*-------------------------------------- SLIST.Search jsr K.GetMemPtr >STYA ZPSListIBlkPtr @@ -466,6 +577,7 @@ SLIST.ToNextBlock >STYA ZPSListDBlkPtr rts *-------------------------------------- +SLIST.hList .BS 1 SLIST.KeyLen .BS 1 SLIST.DataLen .BS 2 SLIST.nDataCnt .BS 2 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 51765a00..709b4d47 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -277,7 +277,7 @@ K.MKFIFO >STYA ZPPtr1 pathname buffer ldy #0 -.1 lda STAT.FIFO,y +.1 lda IO.DEV.FIFO,y sta (ZPPtr1),y iny cpy #9 diff --git a/SYS/KERNEL.S.UNISTD.txt b/SYS/KERNEL.S.UNISTD.txt index d7bc47a7..ffe8f3e9 100644 --- a/SYS/KERNEL.S.UNISTD.txt +++ b/SYS/KERNEL.S.UNISTD.txt @@ -36,8 +36,8 @@ UNISTD.Open ldx #5 /DEV/ bcs .9 .1 lda K.MLI.PATH,x - cmp IO.DEVDIR-1,x - bne .9 + cmp IO.DEV.FIFO-1,x + bne IO.OPEN.REG dex bne .1 *-------------------------------------- @@ -83,17 +83,82 @@ UNISTD.Open ldx #5 /DEV/ .71 lda (pFD) #S.FD.T tax - jmp (.8,x) + jmp (.8-4,x) -.8 .DA STDIO.IOERR REG - .DA STDIO.IOERR DIR +.8 +* .DA STDIO.IOERR REG +* .DA STDIO.IOERR DIR .DA IO.OPEN.CDEV .DA IO.OPEN.BDEV .DA STDIO.IOERR LNK .DA IO.OPEN.DSOCK .DA IO.OPEN.SSOCK .DA IO.OPEN.PIPE -.9 jmp IO.OPEN.REG +*-------------------------------------- +IO.OPEN.REG >MLICALL MLIGETFILEINFO + bcc IO.OPEN.REG.E Already Exists + + bit IO.Open.FLAGS Create if not exists ? + bpl IO.OPEN.RTS No, return MLI error + + ldx #2 Yes, Create... + +.1 lda IO.Open.TYPE,x + sta K.MLI.PARAMS+4,x File type,Aux type + dex + bpl .1 + + lda #S.FI.ST.STD + + jsr IO.MLI.CREATE + bcs IO.OPEN.RTS + +IO.OPEN.REG.E ldx #0 + jsr IO.MkFD + bcs IO.OPEN.RTS + + jsr IO.MLI.OPEN + bcs IO.OPEN.ERR + + lda IO.Open.FLAGS + bit #O.WRONLY + beq .20 Write mode ? + + and #O.APPEND Append ? + bne .11 yes, go to end of file + + stz K.MLI.PARAMS+2 + stz K.MLI.PARAMS+3 + stz K.MLI.PARAMS+4 + >MLICALL MLISETEOF no, reset size to 0 + bra .21 + +.11 >MLICALL MLIGETEOF + bcs IO.OPEN.ERR + + >MLICALL MLISETMARK +.21 bcs IO.OPEN.ERR + +.20 lda IO.Open.FLAGS + and #O.TEXT Text Mode ? + beq .8 + + lda #$FF + sta K.MLI.PARAMS+2 + lda #C.CR + sta K.MLI.PARAMS+3 + >MLICALL MLINEWLINE + bcs IO.OPEN.ERR + +.8 lda IO.hFD +IO.OPEN.RTS rts + +IO.OPEN.ERR pha Save Error Code + lda IO.hFD + jsr K.Close + pla + sec + rts */-------------------------------------- * # close * ## C diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index c4074e09..29da74a0 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -39,6 +39,9 @@ Mem.XLoMem .EQ * A2osX.GP .PH A2osX.SYSCALL .INB USR/SRC/SYS/KERNEL.S.GP .EP +A2osX.GPX .PH A2osX.SYSCALL + .INB USR/SRC/SYS/KERNEL.S.GPX + .EP A2osX.D1 .PH $D000 .DA #RRAMWRAMBNK1 .INB USR/SRC/SYS/KERNEL.S.STAT @@ -52,13 +55,12 @@ A2osX.D1 .PH $D000 .EP A2osX.D2 .PH $D000 .DA #RRAMWRAMBNK2 - .INB USR/SRC/SYS/KERNEL.S.BIN .INB USR/SRC/SYS/KERNEL.S.STRING .INB USR/SRC/SYS/KERNEL.S.TIME + .INB USR/SRC/SYS/KERNEL.S.BIN .INB USR/SRC/SYS/KERNEL.S.PS .INB USR/SRC/SYS/KERNEL.S.ARG .INB USR/SRC/SYS/KERNEL.S.ENV - .INB USR/SRC/SYS/KERNEL.S.PWD .EP A2osX.E0 .PH $E000 .INB USR/SRC/SYS/KERNEL.S.JMP