diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b6a14d12..e2113c53 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index a2db9cb6..84c27b52 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index 8eca6b06..e41c7303 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -71,7 +71,11 @@ A2osX.QC.Start1 sei cmp $2004 bne .8 + ldx $280 +* $2005 = BufSize +* $2006 = PathLen +* $2007... Path .8 jmp $2000 diff --git a/BIN/EDIT.S.FILE.txt b/BIN/EDIT.S.FILE.txt index e2b9f0d3..9808c119 100644 --- a/BIN/EDIT.S.FILE.txt +++ b/BIN/EDIT.S.FILE.txt @@ -2,8 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -FILE.New jsr BUF.ResetSel - jsr SCRN.UpdateStatusBar +FILE.New jsr FILE.Reset >LDYA L.MSG.NEWFILE @@ -14,92 +13,35 @@ FILE.New.1 >PUSHYA txa >STA.G hFileName - - >LDYAI 1024 - >STYA BufLen - >SYSCALL GetMem - bcs .9 - - >STYA BufPtr - >STYA.G BufBase - - txa - >STA.G hBuf FileLen already set to 0 - - lda #0 - sta (BufPtr) - - stz FileLen - stz FileLen+1 - - jsr SCRN.Home - clc .9 rts *-------------------------------------- -FILE.Load jsr BUF.ResetSel - jsr SCRN.UpdateStatusBar +FILE.Load jsr FILE.Reset - >LDA.G hFileName - >SYSCALL GetMemPtr - >PUSHYA - >PUSHEA.G STATBUF - >SYSCALL Stat - bcc .1 - - >LDA.G hFileName - >SYSCALL GetMemPtr - jmp FILE.New.1 - -.1 >LDYAI 256 - >SYSCALL GetMem - bcs .99 - - >STYA ZPPTR1 - stx TmpByte - - >LDA.G STATBUF+S.STAT.P.TYPE - cmp #S.FI.T.TXT - bne .2 - - jsr FILE.Load.TXT - jmp FILE.Close - -.2 cmp #$FA S-C/ASM? - bne .9 - - jsr FILE.Load.ASM - jmp FILE.Close - -.9 lda TmpByte - >SYSCALL FreeMem - - lda #MLI.E.INCFF - sec -.99 rts -*-------------------------------------- -FILE.Load.TXT stz FileLen - stz FileLen+1 - - jsr SCRN.Home - - stz TmpIndex hFile - - >STZ.G FileType + jsr FILE.GetTmpBuf + bcs FILE.Load.RTS ldx #S.FI.T.TXT - jsr FILE.OpenTypeX - bcs .9 + lda #O.RDONLY + jsr FILE.OpenAX + bcs .1 - >PUSHA - >PUSHEA.G STATBUF + jsr FILE.Load.TXT + jmp FILE.Close + +.1 ldx #$FA + lda #O.RDONLY + jsr FILE.OpenAX + bcs .9 - >SYSCALL FStat - bcs .9 - - jsr FILE.GetBuffer - bcs .9 + jsr FILE.Load.ASM + jmp FILE.Close +.9 >LDA.G hFileName + >SYSCALL GetMemPtr + bra FILE.New.1 +*-------------------------------------- +FILE.Load.TXT .1 ldy #0 jsr FILE.ReadY read 256 bcs .7 @@ -119,23 +61,12 @@ FILE.Load.TXT stz FileLen >STA.G FileType ply - bra .5 + bra .4 -.3 sta (BufPtr) - inc BufPtr - bne .4 +.3 jsr FILE.Load.2Buf + bcs FILE.Load.RTS - inc BufPtr+1 - -.4 cmp #C.CR - beq .5 - - inc FileLen - bne .5 - - inc FileLen+1 - -.5 dec TmpCount +.4 dec TmpCount beq .1 iny @@ -151,22 +82,12 @@ FILE.Load.TXT stz FileLen rts .9 sec - rts + +FILE.Load.RTS rts *-------------------------------------- -FILE.Load.ASM stz FileLen - stz FileLen+1 - - lda #4 +FILE.Load.ASM lda #4 >STA.G FileType - lda #8 - jsr FILE.GetBufferA 2k buffer - bcs .9 - - ldx #$FA - jsr FILE.OpenTypeX - bcs .99 - .1 ldy #3 jsr FILE.ReadY bcs .7 @@ -205,7 +126,7 @@ FILE.Load.ASM.Decode tax bmi .2 - jsr FILE.Load.ASM.2Buf + jsr FILE.Load.2Buf bcc .1 .9 rts @@ -219,7 +140,7 @@ FILE.Load.ASM.Decode .4 lda (ZPPTR1),y Get Repeat Char - jsr FILE.Load.ASM.2Buf + jsr FILE.Load.2Buf bcs .9 dex @@ -233,7 +154,7 @@ FILE.Load.ASM.Decode .6 lda #C.SPACE - jsr FILE.Load.ASM.2Buf + jsr FILE.Load.2Buf bcs .9 dex @@ -243,8 +164,7 @@ FILE.Load.ASM.Decode .8 lda #C.CR *-------------------------------------- -FILE.Load.ASM.2Buf - phy +FILE.Load.2Buf phy phx sta (BufPtr) @@ -278,21 +198,15 @@ FILE.Load.ASM.2Buf .9 plx ply - rts +FILE.Save.9 rts *-------------------------------------- -FILE.Save >LDYAI 256 - >SYSCALL GetMem +FILE.Save jsr FILE.GetTmpBuf bcs FILE.Save.9 - - >STYA ZPPTR1 - stx TmpByte >LDA.G FileType tax jmp (J.SAVE,x) - -FILE.Save.9 rts *-------------------------------------- FILE.Save.CR clc .HS B0 BCS @@ -300,7 +214,8 @@ FILE.Save.CRLF sec ror TmpIndex+1 ldx #S.FI.T.TXT - jsr FILE.CreateTypeX + lda #O.CREATE+O.WRONLY + jsr FILE.OpenAX bcs FILE.Save.9 @@ -353,8 +268,9 @@ FILE.Save.ASM stz TmpLen inc TmpLen - ldx #$FA S-C/ASM - jsr FILE.CreateTypeX + ldx #S.FI.T.ASM + lda #O.CREATE+O.WRONLY + jsr FILE.OpenAX bcs FILE.Save.99 >LDYA.G BufBase @@ -463,9 +379,10 @@ FILE.Close php pha lda TmpByte beq .1 + >SYSCALL FreeMem -.1 lda TmpIndex +.1 lda TmpIndex hFile beq .2 >SYSCALL FClose @@ -474,12 +391,7 @@ FILE.Close php plp rts *-------------------------------------- -FILE.OpenTypeX lda #O.RDONLY - bra FILE.Open -FILE.CreateTypeX - lda #O.CREATE+O.WRONLY - -FILE.Open stz TmpIndex +FILE.OpenAX stz TmpIndex hFile phx pha @@ -493,13 +405,14 @@ FILE.Open stz TmpIndex >PUSHWZ Aux type >SYSCALL FOpen bcs .9 - sta TmpIndex + + sta TmpIndex hFile .9 rts *-------------------------------------- FILE.ReadY phy - >PUSHB TmpIndex + >PUSHB TmpIndex hFile >PUSHW ZPPTR1 lda #0 @@ -514,7 +427,7 @@ FILE.ReadY phy *-------------------------------------- FILE.WriteY phy - >PUSHB TmpIndex + >PUSHB TmpIndex hFile >PUSHW ZPPTR1 ply @@ -523,32 +436,43 @@ FILE.WriteY phy >SYSCALL FWrite rts *-------------------------------------- -FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3 - dey - ora (pData),y - bne FILE.GetBuffer.9 +FILE.Reset >LDA.G hBuf + beq .1 - dey - lda (pData),y Size HI - inc - inc + >SYSCALL FreeMem -FILE.GetBufferA ldy #0 Size LO +.1 >STZ.G hBuf + >STA.G FileType + + stz FileLen + stz FileLen+1 + jsr BUF.ResetSel + + >LDYAI FILEBUF.SIZE >STYA BufLen >SYSCALL GetMem - bcs .99 + bcs FILE.GetTmpBuf.RTS >STYA BufPtr >STYA.G BufBase txa >STA.G hBuf -.99 rts + lda #0 + sta (BufPtr) + + jmp SCRN.UpdateStatusBar +*-------------------------------------- +FILE.GetTmpBuf >LDYAI 256 + >SYSCALL GetMem + bcs .9 -FILE.GetBuffer.9 - lda #E.FTB - sec - rts + >STYA ZPPTR1 + stx TmpByte + +.9 +FILE.GetTmpBuf.RTS + rts *-------------------------------------- MAN SAVE usr/src/bin/edit.s.file diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index 248171e1..6f3df41a 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -10,8 +10,8 @@ SCRN.Init >PUSHW L.SEQ.INIT >SYSCALL PrintF bcs SCRN.Init.9 - jsr SCRN.Home - + jmp SCRN.Home +*-------------------------------------- SCRN.Repaint lda #$ff >STA.G bUpdateTop >STA.G bUpdateStatus diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 83f3b87a..86463c1a 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -4,6 +4,8 @@ NEW .OP 65C02 .OR $2000 .TF bin/edit +*-------------------------------------- +FILEBUF.SIZE .EQ 2048 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i @@ -68,7 +70,7 @@ L.SEQ.SCROLLDN .DA SEQ.SCROLLDN L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN L.SEQ.CEOL .DA SEQ.CEOL -L.MSG.DETECT .DA MSG.DETECT +L.MSG.TERMCAP .DA MSG.TERMCAP L.MSG.TOPBAR .DA MSG.TOPBAR L.MSG.FILETYPES .DA MSG.TXTCR .DA MSG.TXTCRLF @@ -143,7 +145,7 @@ J.DLG.CTRL.CharIn CS.INIT clc CS.INIT.RTS rts *-------------------------------------- -CS.RUN >PUSHW L.MSG.DETECT +CS.RUN >PUSHW L.MSG.TERMCAP >PUSHBI 0 >SYSCALL PrintF Send Query for term W & H bcs CS.INIT.RTS @@ -155,6 +157,8 @@ CS.RUN >PUSHW L.MSG.DETECT >LDA.G ScreenW Wait for Response from terminal for W & H beq .1 + jsr SCRN.Init + >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0 >SYSCALL GetMem bcs CS.INIT.RTS @@ -181,7 +185,7 @@ CS.RUN >PUSHW L.MSG.DETECT .2 jsr FILE.New bcs CS.RUN.RTS -.3 jsr SCRN.Init +.3 jsr SCRN.Repaint bcs CS.RUN.RTS >LDYAI 65 @@ -203,7 +207,7 @@ CS.RUN >PUSHW L.MSG.DETECT lda #0 sta (ZPPTR1) - +*-------------------------------------- CS.RUN.LOOP jsr GetCh bcs CS.RUN.RTS I/O error @@ -482,7 +486,7 @@ SEQ.SCROLLUP .AZ "\eD" SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr" SEQ.SCROLLDN .AZ "\eM" *-------------------------------------- -MSG.DETECT .AZ "Querying term caps...\e[999;999H\e[6n" +MSG.TERMCAP .AZ "\e[999;999H\e[6n" MSG.TOPBAR .AZ "A2osX Edit %d.%d:%s (%s)" MSG.TXTCR .AZ "TXT/CR" MSG.TXTCRLF .AZ "TXT/CRLF" @@ -494,6 +498,7 @@ MSG.STATUSBAR.S .AZ "%s Saved." MSG.STATUSBAR.E .AZ "Error:%h" MSG.GOTOXY .AZ "\e[%d;%dH" MSG.HELPLINE .AZ "\e[0m\e[93;44m%S\e[K" +*-------------------------------------- MSG.HELP >PSTR "All commands:" >PSTR "-------------" >PSTR " Ctrl-A : This help screen" diff --git a/INC/MLI.I.txt b/INC/MLI.I.txt index 00801939..0c590089 100644 --- a/INC/MLI.I.txt +++ b/INC/MLI.I.txt @@ -1,5 +1,5 @@ NEW - AUTO 4,1 + AUTO 3,1 .LIST OFF *-------------------------------------- * PRODOS Constants @@ -65,6 +65,10 @@ S.FI.T .EQ $04 S.FI.T.TXT .EQ $04 S.FI.T.BIN .EQ $06 S.FI.T.DIR .EQ $0F +S.FI.T.ASM .EQ $FA +S.FI.T.PIX .EQ $CB +S.FI.T.FON .EQ $CC +S.FI.T.PAK .EQ $CF S.FI.T.SYS .EQ $FF S.FI.AUXTYPE .EQ $05 S.FI.TBLKS .EQ $05 diff --git a/LIB/LIBCIFS.S.IO.txt b/LIB/LIBCIFS.S.IO.txt index 5a612195..59245a3a 100644 --- a/LIB/LIBCIFS.S.IO.txt +++ b/LIB/LIBCIFS.S.IO.txt @@ -5,9 +5,12 @@ CIFS.ChTyp CIFS2.ChTyp *-------------------------------------- CIFS.ChMod -CIFS2.ChMod +CIFS2.ChMod >DEBUG + lda #MLI.E.BADCALL + sec + rts *-------------------------------------- -CIFS.FStat +CIFS.FStat jsr GetPFD *-------------------------------------- CIFS2.FStat >DEBUG lda #MLI.E.BADCALL diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index ce35a6c7..d55d2f87 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -557,7 +557,55 @@ CIFS.CallBack bit CIFS.Status *-------------------------------------- .INB usr/src/lib/libcifs.io.s *-------------------------------------- -TypeLess2ProDOS +TypeLess2ProDOS ldy #$ff + +.1 iny + lda (ZPPtr1),y + bne .1 + + tya + tax save finename len + + sbc #4 "x.EXT" ? + beq .9 + + ldx #0 + +.4 phy Y = '.' offset + + phx + +.5 lda PRODOS.FT.TXT,x + iny + cmp (ZPPtr1),y + bne .6 + + inx + txa + and #3 + bne .5 + + pla + lsr + lsr + tax + lda PRODOS.FT.HEX,x + + ply Y = truncated len, A = type + rts + +.6 pla + clc + adc #4 + tax + + ply + + cpx #PRODOS.FT.END + bne .4 + +.9 lda #0 Y = full len, A = 0 (no type) + rts *-------------------------------------- ProDOS2TypeLess tax beq .8 diff --git a/SYS/KERNEL.S.ERRORX.txt b/SYS/KERNEL.S.ERRORX.txt index d581c683..71029ed6 100644 --- a/SYS/KERNEL.S.ERRORX.txt +++ b/SYS/KERNEL.S.ERRORX.txt @@ -62,6 +62,7 @@ ERRORX.ID .DA #MLI.E.BADCALL .DA #MLI.E.DUPFILE .DA #MLI.E.VOLFULL .DA #MLI.E.DIRFULL + .DA #MLI.E.INCFF .DA #MLI.E.UNSUPST .DA #MLI.E.EOF .DA #MLI.E.LOCKED @@ -110,6 +111,7 @@ ERRORX.MSG .AT "Bad MLI Call" .AT "Dup. Filename" .AT "Vol Is Full" .AT "Dir Is Full" + .AT "Incompatible File Format" .AT "Unsupp. Storage" .AT "End Of File" .AT "File Locked" diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index 0e97d8ca..cc70dd32 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -2,9 +2,19 @@ NEW AUTO 3,1 *-------------------------------------- FS.OPEN.REG >MLICALL MLIGETFILEINFO - bcc .2 Already Exists + bcs .10 + + lda IO.Open.TYPE Already Exists + beq .2 + + cmp K.MLI.PARAMS+S.FI.T + beq .2 + + lda #MLI.E.INCFF + sec + rts - bit IO.Open.FLAGS Create if not exists ? +.10 bit IO.Open.FLAGS Create if not exists ? bpl .9 No, return MLI error ldx #2 Yes, Create...