diff --git a/.Floppies/A2OSX.BOOTHD.woz b/.Floppies/A2OSX.BOOTHD.woz index 8e40be4d..360be743 100644 Binary files a/.Floppies/A2OSX.BOOTHD.woz and b/.Floppies/A2OSX.BOOTHD.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7f2ff761..72ac8fec 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ACOS.S.RT.txt b/BIN/ACOS.S.RT.txt index dfa1746a..94f9f1b2 100644 --- a/BIN/ACOS.S.RT.txt +++ b/BIN/ACOS.S.RT.txt @@ -109,6 +109,10 @@ RT.GET >SYSCALL GetChar sta (ZPStrBuf) ldy #1 + + lda #0 + sta (ZPStrBuf),y + bra RT.INPUT.8 *-------------------------------------- RT.INPUT lda #0 diff --git a/BIN/ACOS.S.txt b/BIN/ACOS.S.txt index 5bbdf445..52fb49b7 100644 --- a/BIN/ACOS.S.txt +++ b/BIN/ACOS.S.txt @@ -519,7 +519,7 @@ OUT.CLRSCR .DA #C.ESC .DA #C.ESC .AZ ")0" *-------------------------------------- -FMT.DATE .AZ "%d/%m/%Y" +FMT.DATE .AZ "%m/%d/%y" FMT.TIME .AZ "%H:%M:%S" *-------------------------------------- OptionList .AS "DdTt" diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index 7cc7d7fd..2e278e45 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -656,7 +656,7 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore sta ZPPtr2+1 .7 >PUSHW ZPPtr1 - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .9 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 6e61fa18..715cbbe0 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -371,7 +371,7 @@ CS.RUN.ARGS ldy #S.PS.ARGC beq .2 >PUSHW ZPPtr2 - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .99 txa diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index ca0bd5b5..e6dd8935 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -1,242 +1,375 @@ NEW AUTO 3,1 - .LIST OFF - .OP 65C02 - .OR $2000 - .TF bin/cat + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/cat *-------------------------------------- - .INB inc/macros.i - .INB inc/a2osx.i - .INB inc/kernel.i - .INB inc/mli.i - .INB inc/mli.e.i + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/mli.i + .INB inc/mli.e.i *-------------------------------------- - .DUMMY - .OR ZPBIN + .DUMMY + .OR ZPBIN ZS.START -ZPPtr1 .BS 2 -ZPBufPtr .BS 2 -ByteIndex .BS 1 -ArgCount .BS 1 -FileCount .BS 1 -bPause .BS 1 -bDummy .BS 1 -bIsTTY .BS 1 -ArgIndex .BS 1 -hBuf .BS 1 -hFile .BS 1 -ZS.END .ED +ZPPtr1 .BS 2 +ZPBufPtr .BS 2 +ByteIndex .BS 1 +ArgCount .BS 1 +FileCount .BS 1 +bPause .BS 1 +bPrintAll .BS 1 +bLineNum .BS 1 +bSuppressBlankLine .BS 1 +ArgIndex .BS 1 +hBuf .BS 1 +hFile .BS 1 +LineNum .BS 2 +bPrintedBlankLine .BS 1 +ZS.END .ED *-------------------------------------- -* File Header (16 Bytes) +* File Header (16 Bytes) *-------------------------------------- -CS.START cld - jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 - .DA #S.PS.F.EVENT S.PS.F - .DA #0 - .DA CS.END-CS.START CS - .DA DS.END-DS.START DS - .DA #64 SS - .DA #ZS.END-ZS.START Zero Page Size - .DA 0 +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #S.PS.F.EVENT S.PS.F + .DA #0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #64 SS + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- -.1 .DA CS.INIT - .DA CS.RUN - .DA CS.DOEVENT - .DA CS.QUIT -L.MSG.USAGE .DA MSG.USAGE -L.MSG.CRLF .DA MSG.CRLF -L.MSG.INIT .DA MSG.INIT - .DA 0 +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.MSG.USAGE .DA MSG.USAGE +L.MSG.CRLF .DA MSG.CRLF +L.MSG.INIT .DA MSG.INIT +L.MSG.LINENUM .DA MSG.LINENUM +L.MSG.CTRLCHAR .DA MSG.CTRLCHAR +L.ASCII .DA ASCII + .DA 0 *-------------------------------------- -CS.INIT clc - rts +CS.INIT clc + rts *-------------------------------------- -CS.RUN -.1 stz bIsTTY - - inc ArgCount - lda ArgCount - >SYSCALL ArgV - bcs .7 +CS.RUN +.1 inc ArgCount + lda ArgCount + >SYSCALL ArgV + bcs .7 - >STYA ZPPtr1 + >STYA ZPPtr1 - lda (ZPPtr1) - cmp #'-' - bne .4 + lda (ZPPtr1) + cmp #'-' + bne .4 - ldy #1 - lda (ZPPtr1),y + ldy #1 + lda (ZPPtr1),y - ldx #OptionList.Cnt-1 - -.2 cmp OptionList,x - beq .3 + ldx #OptionList.Cnt-1 + +.2 cmp OptionList,x + beq .3 - dex - bpl .2 + dex + bpl .2 -.99 >PUSHW L.MSG.USAGE - >PUSHBI 0 - >SYSCALL PrintF - lda #E.SYN - sec -.9 rts +.99 >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + lda #E.SYN + sec +.9 rts -.3 ldy OptionVars,x - lda #$80 - sta 0,y - bra .1 +.3 ldy OptionVars,x + lda #$80 + sta 0,y + bra .1 -.4 inc FileCount - bra .1 scan for any other args +.4 inc FileCount + bra .1 scan for any other args -.7 lda FileCount - beq .99 +.7 lda FileCount + beq .99 - >LDYAI 256 - >SYSCALL GetMem - bcs .9 + >LDYAI 256 + >SYSCALL GetMem + bcs .9 - >STYA ZPBufPtr - stx hBuf - - ldy #S.PS.hStdOut - lda (pPS),y + >STYA ZPBufPtr + stx hBuf + + ldy #S.PS.hStdOut + lda (pPS),y - tax - - lsr - bcc CS.RUN.LOOP - - lda Nod.Table.hFD-2,x - >SYSCALL GetMemPtr - >STYA ZPPtr1 + tax + + lda hFDs-1,x + >SYSCALL GetMemPtr + >STYA ZPPtr1 - lda (ZPPtr1) + lda (ZPPtr1) - beq CS.RUN.LOOP + beq CS.RUN.LOOP - inc bIsTTY - - >PUSHW L.MSG.INIT - >PUSHBI 0 - >SYSCALL PrintF + cmp #S.FD.T.PIPE + beq CS.RUN.LOOP + + >PUSHW L.MSG.INIT + >PUSHBI 0 + >SYSCALL PrintF *-------------------------------------- -CS.RUN.LOOP ldy #S.PS.hStdIn - lda (pPS),y - >SYSCALL FEOF - bcs .90 IO error +CS.RUN.LOOP ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL FEOF + bcs .90 IO error - tay - bne .10 no char + tay + bne .10 no char - >SYSCALL GetChar - bcs .9 IO error + >SYSCALL GetChar + bcs .9 IO error - cmp #$03 Ctrl-C - beq .9 Abort.... + cmp #$03 Ctrl-C + beq .9 Abort.... - cmp #$13 Ctrl-S - bne .10 + cmp #$13 Ctrl-S + bne .10 - lda bPause - eor #$ff - sta bPause - bne CS.RUN.LOOP + lda bPause + eor #$ff + sta bPause + bne CS.RUN.LOOP -.10 lda bPause - bne CS.RUN.LOOP Pause... +.10 lda bPause + bne CS.RUN.LOOP Pause... -.11 lda hFile - bne .2 +.11 lda hFile + bne .2 -.1 inc ArgIndex - lda ArgIndex - >SYSCALL ArgV - bcs .99 No more arg...the end! +.1 inc ArgIndex + lda ArgIndex + >SYSCALL ArgV + bcs .99 No more arg...the end! - >STYA ZPPtr1 - lda (ZPPtr1) - cmp #'-' - beq .1 An option, skip... + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #'-' + beq .1 An option, skip... - >LDYA ZPPtr1 - jsr CS.RUN.OPEN -.90 bcs .9 + >LDYA ZPPtr1 + jsr CS.RUN.OPEN +.90 bcs .9 - sta hFile + sta hFile -.2 lda hFile - >SYSCALL GetC - bcs .7 +.2 >PUSHA + >PUSHW ZPBufPtr + >PUSHWI 254 Leave room for CRLF + >SYSCALL FGetS + bcs .7 - pha - >SYSCALL PutChar - pla + jsr CS.RUN.PRINT + bcc CS.RUN.LOOP + rts - cmp #C.CR - bne CS.RUN.LOOP +.7 cmp #MLI.E.EOF + bne .9 - lda bIsTTY - beq CS.RUN.LOOP + jsr CS.RUN.CLOSE + jmp CS.RUN.LOOP - lda #C.LF - >SYSCALL PutChar - - bra CS.RUN.LOOP - -.7 cmp #MLI.E.EOF - bne .9 - - jsr CS.RUN.CLOSE - jmp CS.RUN.LOOP - -.99 lda #0 Exit with no Error -.9 sec - rts +.99 lda #0 Exit with no Error +.9 sec + rts *-------------------------------------- -CS.RUN.OPEN >PUSHYA - >PUSHBI O.RDONLY+O.TEXT - >PUSHBI S.FI.T.TXT - >PUSHWZ Aux type - >SYSCALL FOpen - rts +CS.RUN.OPEN stz bPrintedBlankLine Reset this flag for the new file + >PUSHYA + >PUSHBI O.RDONLY+O.TEXT + >PUSHBI S.FI.T.TXT + >PUSHWZ Aux type + >SYSCALL FOpen + rts *-------------------------------------- -CS.QUIT lda hBuf - beq CS.RUN.CLOSE - >SYSCALL FreeMem +CS.RUN.PRINT inc LineNum + bne .10 -CS.RUN.CLOSE lda hFile - beq .8 + inc LineNum+1 - stz hFile +.10 lda bSuppressBlankLine + bpl .2 - >SYSCALL FClose -.8 clc - rts + lda (ZPBufPtr) + bne .1 Empty line ? + + lda bPrintedBlankLine + bmi .8 + + lda #$ff + sta bPrintedBlankLine + bra .2 + +.1 stz bPrintedBlankLine + +.2 jsr CS.RUN.PRINTNUM + bcs .99 + + lda bPrintAll + bmi .3 + + ldy #$ff + +.20 iny + lda (ZPBufPtr),y + beq .21 + + cmp #C.SPACE + bcs .20 + + lda #C.SPACE + sta (ZPBufPtr),y + bra .20 + +.21 >LDYA ZPBufPtr + >SYSCALL PutS + rts *-------------------------------------- -CS.DOEVENT sec - rts +.3 stz ByteIndex + +.4 ldy ByteIndex + lda (ZPBufPtr),y + beq .7 + + cmp #C.SPACE + bcc .5 + + >SYSCALL PutChar +.99 bcs .9 + + bra .62 + +.8 clc + rts + +.5 tax + + >LDYA L.ASCII + >STYA ZPPtr1 +.6 dex + bmi .61 + + lda ZPPtr1 + sec + adc (ZPPtr1) + sta ZPPtr1 + bcc .6 + + inc ZPPtr1+1 + bra .6 + +.61 >PUSHW L.MSG.CTRLCHAR + >PUSHW ZPPtr1 + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + +.62 inc ByteIndex + bne .4 + +.7 >PUSHW L.MSG.CRLF + >PUSHBI 0 + >SYSCALL PrintF + +.9 rts +*-------------------------------------- +CS.RUN.PRINTNUM clc + lda bLineNum + bpl .8 + + >PUSHW L.MSG.LINENUM + >PUSHW LineNum + >PUSHBI 2 + >SYSCALL PrintF +.8 rts +*-------------------------------------- +CS.QUIT lda hBuf + beq CS.RUN.CLOSE + >SYSCALL FreeMem + +CS.RUN.CLOSE lda hFile + beq .8 + + stz hFile + + >SYSCALL FClose +.8 clc + rts +*-------------------------------------- +CS.DOEVENT sec + rts *-------------------------------------- CS.END *-------------------------------------- -OptionList .AS "x" -OptionList.Cnt .EQ *-OptionList -OptionVars .DA #bDummy +OptionList .AS "ANSans" +OptionList.Cnt .EQ *-OptionList +OptionVars .DA #bPrintAll,#bLineNum,#bSuppressBlankLine,#bPrintAll,#bLineNum,#bSuppressBlankLine *-------------------------------------- -MSG.USAGE .AS "Usage : CAT File1 [File2...]" -MSG.CRLF .AZ "\r\n" -MSG.INIT .AZ "\e[?7h" Enable Line Wrap +MSG.USAGE .AS "Usage : CAT File1 [File2...]\r\n" + .AS " -A : Show All non printable characters\r\n" + .AS " -N : Number all output lines\r\n" + .AS " -S : Suppress repeated empty output lines" +MSG.CRLF .AZ "\r\n" +MSG.INIT .AZ "\e[?7h" Enable Line Wrap +MSG.LINENUM .AZ "%5D:" +MSG.CTRLCHAR .AZ "[%S]" *-------------------------------------- - .DUMMY - .OR 0 +ASCII >PSTR "NUL" + >PSTR "SOH" + >PSTR "STX" + >PSTR "ETX" + >PSTR "EOT" + >PSTR "ENQ" + >PSTR "ACK" + >PSTR "BEL" + >PSTR "BS" + >PSTR "TAB" + >PSTR "LF" + >PSTR "VT" + >PSTR "FF" + >PSTR "CR" + >PSTR "SO" + >PSTR "SI" + >PSTR "DLE" + >PSTR "DC1" + >PSTR "DC2" + >PSTR "DC3" + >PSTR "DC4" + >PSTR "NAK" + >PSTR "SYN" + >PSTR "ETB" + >PSTR "CAN" + >PSTR "EM" + >PSTR "SUB" + >PSTR "ESC" + >PSTR "FS" + >PSTR "GS" + >PSTR "RS" + >PSTR "US" +*-------------------------------------- + .DUMMY + .OR 0 DS.START -DS.END .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/cat.s diff --git a/BIN/CHGRP.S.txt b/BIN/CHGRP.S.txt index 42116f52..2848e981 100644 --- a/BIN/CHGRP.S.txt +++ b/BIN/CHGRP.S.txt @@ -228,7 +228,7 @@ CS.RUN.FILE clc *-------------------------------------- CS.RUN.GetGID >SYSCALL ArgV >PUSHYA - >PUSHWI 0 + >PUSHWZ >SYSCALL GetGRName bcs .9 diff --git a/BIN/CHOWN.S.txt b/BIN/CHOWN.S.txt index cadd10b9..226f56d1 100644 --- a/BIN/CHOWN.S.txt +++ b/BIN/CHOWN.S.txt @@ -230,7 +230,7 @@ CS.RUN.FILE *-------------------------------------- CS.RUN.GetUID >SYSCALL ArgV >PUSHYA - >PUSHWI 0 + >PUSHWZ >SYSCALL GetPWName bcs .9 diff --git a/BIN/CSH.S.CORE.txt b/BIN/CSH.S.CORE.txt index 7e6fcc0f..de703e18 100644 --- a/BIN/CSH.S.CORE.txt +++ b/BIN/CSH.S.CORE.txt @@ -881,7 +881,7 @@ CSH.GetVarDef phy >PUSHWI ZPVarDef >PUSHWI 8 8 bytes - >PUSHWI 0 From Start + >PUSHWZ From Start >SYSCALL SListGetData rts *-------------------------------------- diff --git a/BIN/CSH.S.EXP.txt b/BIN/CSH.S.EXP.txt index a8fe6460..2b3b168a 100644 --- a/BIN/CSH.S.EXP.txt +++ b/BIN/CSH.S.EXP.txt @@ -283,7 +283,7 @@ CSH.VarLookup >PUSHB.G CSH.hSymbols >PUSHEA.G CSH.VarDef >PUSHWI 8 8 bytes - >PUSHWI 0 From Start + >PUSHWZ From Start >SYSCALL SListGetData .9 rts *-------------------------------------- diff --git a/BIN/CUT.S.txt b/BIN/CUT.S.txt index 95eccb92..cd76f023 100644 --- a/BIN/CUT.S.txt +++ b/BIN/CUT.S.txt @@ -141,10 +141,7 @@ CS.RUN lda #C.SPACE .80 ldy #S.PS.hStdIn lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 diff --git a/BIN/EDIT.S.FILE.txt b/BIN/EDIT.S.FILE.txt index bd6f07bb..b3fe814b 100644 --- a/BIN/EDIT.S.FILE.txt +++ b/BIN/EDIT.S.FILE.txt @@ -7,7 +7,7 @@ FILE.New jsr FILE.Reset >LDYA L.MSG.NEWFILE FILE.RealPath >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .9 diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 92457742..56618780 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -365,7 +365,7 @@ CS.RUN.LL.DISKII >PUSHB VolNum >PUSHB CurHead >PUSHB CurTrack - >PUSHWI 0 Empty track + >PUSHWZ Empty track >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s bcs .9 diff --git a/BIN/FORTH.S.GFX.txt b/BIN/FORTH.S.GFX.txt index db67f82d..a8b854ab 100644 --- a/BIN/FORTH.S.GFX.txt +++ b/BIN/FORTH.S.GFX.txt @@ -38,7 +38,7 @@ GFX.GR ldy #S.PS.hStdIn GFX.IOCTL >PUSHA >PUSHBI IOCTL.CONTROL - >PUSHWI 0 + >PUSHWZ >SYSCALL IOCTL rts *-------------------------------------- diff --git a/BIN/GREP.S.txt b/BIN/GREP.S.txt index beb48a65..106970bb 100644 --- a/BIN/GREP.S.txt +++ b/BIN/GREP.S.txt @@ -146,10 +146,7 @@ CS.RUN.CheckArgs lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/HTTPGET.S.txt b/BIN/HTTPGET.S.txt index 71a685af..f5326a7c 100644 --- a/BIN/HTTPGET.S.txt +++ b/BIN/HTTPGET.S.txt @@ -311,7 +311,7 @@ CS.RUN.GET jsr CS.RUN.ENCODE >PUSHYA >PUSHBI O.CREATE+O.WRONLY+O.TRUNC >PUSHBI 0 TYPE - >PUSHWI 0 AUXTYPE + >PUSHWZ AUXTYPE >SYSCALL FOpen bcs .9 sta hFile diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index b512bfb9..8a0a5ffc 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -229,12 +229,14 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV lda IPCFG+S.NETCFG.DevID >PUSHA - ldx IPCFG+S.NETCFG.DevID - lda Dev.Table-1,x + >SYSCALL GetMemPtr + + pha + tya clc adc #S.FD.DEV tay - lda Dev.Table,x + pla adc /S.FD.DEV >PUSHYA diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index b57ba8f2..8ed49da9 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -1,24 +1,24 @@ NEW AUTO 3,1 - .LIST OFF - .OP 65C02 - .OR $2000 - .TF bin/ls + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/ls *-------------------------------------- - .INB inc/macros.i - .INB inc/a2osx.i - .INB inc/kernel.i - .INB inc/mli.i - .INB inc/mli.e.i + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/mli.i + .INB inc/mli.e.i *-------------------------------------- X.ENTER.SUBDIR .EQ 1 X.COPY.TO.DEST .EQ 0 X.DELETE.SOURCE .EQ 0 *-------------------------------------- -MAX.COL .EQ 4 +MAX.COL .EQ 4 *-------------------------------------- - .DUMMY - .OR ZPBIN + .DUMMY + .OR ZPBIN ZS.START ZPPtr1 .BS 2 ZPPtr2 .BS 2 @@ -45,52 +45,51 @@ ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- -CS.START cld - jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 - .DA #0 S.PS.F.EVENT - .DA #0 - .DA CS.END-CS.START Code Size (without Constants) - .DA DS.END-DS.START Data SegmentSize - .DA #64 Stack Size - .DA #ZS.END-ZS.START Zero Page Size - .DA 0 +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #0 S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data SegmentSize + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- -.1 .DA CS.INIT - .DA CS.RUN - .DA CS.DOEVENT - .DA CS.QUIT +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE -L.MSG.REG .DA MSG.REG +L.MSG.REG .DA MSG.REG L.MSG.REGEXT .DA MSG.REGEXT -L.MSG.DIR .DA MSG.DIR +L.MSG.DIR .DA MSG.DIR L.MSG.DIREXT .DA MSG.DIREXT -L.MSG.BDEV .DA MSG.BDEV +L.MSG.BDEV .DA MSG.BDEV L.MSG.BDEVEXT .DA MSG.BDEVEXT -L.MSG.ENTER .DA MSG.ENTER +L.MSG.ENTER .DA MSG.ENTER L.PRODOS.FT.TXT .DA PRODOS.FT.TXT -L.FMT.Date .DA FMT.Date -L.FMT.Time .DA FMT.Time +L.FMT.Date .DA FMT.Date +L.FMT.Time .DA FMT.Time L.FMT.string6 .DA FMT.string6 -L.FMT.int16 .DA FMT.int16 +L.FMT.int16 .DA FMT.int16 J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG - .DA CS.RUN.PRINT.DIR - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.BDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV - .DA CS.RUN.PRINT.CDEV - .DA 0 + .DA CS.RUN.PRINT.DIR + .DA CS.RUN.PRINT.CDEV + .DA CS.RUN.PRINT.BDEV + .DA CS.RUN.PRINT.CDEV + .DA CS.RUN.PRINT.CDEV + .DA CS.RUN.PRINT.CDEV + .DA CS.RUN.PRINT.CDEV + .DA 0 *-------------------------------------- -CS.INIT clc - rts +CS.INIT clc + rts *-------------------------------------- -CS.RUN - stz bIsTTY +CS.RUN stz bIsTTY jsr CS.RUN.ISATTY .1 inc ArgCount @@ -705,14 +704,14 @@ CS.RUN.NewLine.8 CS.RUN.ISATTY ldy #S.PS.hStdOut lda (pPS),y tax - lsr - bcc .9 - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) beq .9 + inc bIsTTY + .9 rts *-------------------------------------- CS.DOEVENT sec diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index e38e9322..a1cf7f1e 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -38,14 +38,21 @@ CS.START cld .DA CS.EVENT .DA CS.QUIT L.MSG0 .DA MSG0 -L.MSG1 .DA MSG1 -L.MSG2.ERR .DA MSG2.ERR -L.MSG2 .DA MSG2 -L.MSG2.C .DA MSG2.C -L.MSG2.B .DA MSG2.B -L.MSG3 .DA MSG3 -L.MSG4 .DA MSG4 +L.MSG.DEV .DA MSG.DEV +L.MSG.DEV.ERR .DA MSG.DEV.ERR +L.MSG.DEV.DIB .DA MSG.DEV.DIB +L.MSG.DEV.C .DA MSG.DEV.C +L.MSG.DEV.B .DA MSG.DEV.B +L.MSG.PIPE .DA MSG.PIPE L.NO.PATH .DA NO.PATH +J.FD .DA DumpFD.REG + .DA DumpFD.DIR + .DA DumpFD.CDEV + .DA DumpFD.CDEV + .DA DumpFD.LNK + .DA DumpFD.DSOCK + .DA DumpFD.SSOCK + .DA DumpFD.PIPE L.FD.T .DA FD.T.REG .DA FD.T.DIR .DA FD.T.CDEV @@ -59,73 +66,44 @@ L.FD.T .DA FD.T.REG CS.INIT clc rts *-------------------------------------- -CS.RUN jsr DumpDev - bcs .9 - - jsr DumpNod - bcs .9 - -.8 lda #0 tell TSKMGR that all done ok, but - sec we do not want to stay in memory -.9 rts -*-------------------------------------- -DumpDev >LDYA L.MSG0 +CS.RUN >LDYA L.MSG0 >SYSCALL PutS - ldx #1 - stx Index + ldx #0 -.1 lda Dev.Table-1,x - sta ZPFDPtr - lda Dev.Table,x - sta ZPFDPtr+1 +.1 stx Index + lda hFDs,x beq .7 - - jsr DumpDevFD + + >SYSCALL GetMemPtr + >STYA ZPFDPtr + + jsr DumpFD bcs .9 - ldy #DEV.DIB+S.DIB-1 - ldx #S.DIB-1 - -.2 lda BLANK.DIB,x - sta (pData),y - dey - dex - bpl .2 - - >PUSHB Index - >PUSHEA.G DEV.DIB - >SYSCALL GetDevStatus - bcc .6 - - pha - >PUSHW L.MSG2.ERR - pla - >PUSHA - >PUSHBI 1 - >SYSCALL PrintF - bcs .9 - - bra .7 - -.6 jsr DumpDevDIB - bcs .9 - -.7 inc Index - inc Index - ldx Index - cpx #K.DEV.MAX*2+1 + +.7 inx + cpx #K.hFD.MAX bne .1 -.8 clc + lda #0 + sec .9 rts *-------------------------------------- -DumpDevFD >PUSHW L.MSG1 +DumpFD lda (ZPFDPtr) + tax + jmp (J.FD,x) +*-------------------------------------- +DumpFD.REG +DumpFD.DIR + clc + rts +*-------------------------------------- +DumpFD.CDEV +DumpFD.BDEV >PUSHW L.MSG.DEV - >PUSHB Index - - >PUSHB (ZPFDPtr) S.FD.T + jsr DumpFD.T lda ZPFDPtr clc @@ -137,16 +115,39 @@ DumpDevFD >PUSHW L.MSG1 ldy #S.FD.DEV.DRVPTR+1 >PUSHB (ZPFDPtr),y - dey >PUSHB (ZPFDPtr),y - >PUSHBI 6 + >PUSHBI 7 >SYSCALL PrintF - rts + bcs .9 + + ldy #DEV.DIB+S.DIB-1 + ldx #S.DIB-1 + +.1 lda BLANK.DIB,x + sta (pData),y + dey + dex + bpl .1 + + ldx Index + >PUSHB hFDs,x + >PUSHEA.G DEV.DIB + >SYSCALL GetDevStatus + bcc DumpFD.DevDIB + + pha + >PUSHW L.MSG.DEV.ERR + pla + >PUSHA + >PUSHBI 1 + >SYSCALL PrintF + +.9 rts *-------------------------------------- -DumpDevDIB >PUSHW L.MSG2 +DumpFD.DevDIB >PUSHW L.MSG.DEV.DIB >LDA.G DEV.DIB+S.DIB.S @@ -181,7 +182,7 @@ DumpDevDIB >PUSHW L.MSG2 >LDA.G DEV.DIB+S.DIB.S bpl .4 char device... - >PUSHW L.MSG2.B + >PUSHW L.MSG.DEV.B >PUSHBI 0 >PUSHB.G DEV.DIB+S.DIB.SIZE+2 @@ -190,59 +191,46 @@ DumpDevDIB >PUSHW L.MSG2 >PUSHBI 4 bra .8 -.4 >PUSHW L.MSG2.C +.4 >PUSHW L.MSG.DEV.C >PUSHBI 0 .8 >SYSCALL PrintF .9 rts *-------------------------------------- -DumpNod >LDYA L.MSG3 - >SYSCALL PutS +DumpFD.LNK +DumpFD.DSOCK +DumpFD.SSOCK clc + rts +*-------------------------------------- +DumpFD.PIPE >PUSHW L.MSG.PIPE - ldx #2 + jsr DumpFD.T -.1 stx Index + jsr DumpFD.Name + + >PUSHBI 5 + >SYSCALL PrintF + clc + rts +*-------------------------------------- +DumpFD.T ldx Index + >PUSHB hFDs,x - lda Nod.Table.hFD-2,x - beq .7 - - >PUSHW L.MSG4 - - txa - >PUSHA - - lda Nod.Table.hFD-2,x - >PUSHA - - >SYSCALL GetMemPtr - >STYA ZPFDPtr - lda (ZPFDPtr) + lda (ZPFDPtr) S.FD.T tax >PUSHW L.FD.T,x + rts +*-------------------------------------- +DumpFD.Name ldx Index + lda hFDs.hName,x + beq .1 - ldx Index - lda Nod.Table.hName-2,x - bne .2 - - >LDYA L.NO.PATH - bra .3 + >SYSCALL GetMemPtr + >PUSHYA + rts -.2 >SYSCALL GetMemPtr - -.3 >PUSHYA - >PUSHBI 6 - - >SYSCALL PrintF - - ldx Index - -.7 inx - inx - cpx #K.NOD.MAX+2 - bne .1 - - clc -.9 rts +.1 >PUSHYA L.NO.PATH + rts *-------------------------------------- CS.EVENT sec rts @@ -251,16 +239,16 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .AZ "hDev Tp Name Addr. Status Typ/Sub IDString Version Size (BLK)" -MSG1 .AZ "%03d %h %12s $%H " -MSG2.ERR .AZ "Device Error : $%h\r\n" -MSG2 .AZ "%s $%h/$%h %16S %03d.%03d " -MSG2.B .AZ "%10u\r\n" -MSG2.C .AZ "n/a\r\n" -MSG.SFLAGS .AS "bwrlneio" +MSG0 .AZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)" +MSG.DEV .AZ "%3d %5s %12s %H " +MSG.DEV.ERR .AZ "Device Error : $%h\r\n" +MSG.DEV.DIB .AZ "%s $%h/$%h %16S %03d.%03d " +MSG.DEV.B .AZ "%10u\r\n" +MSG.DEV.C .AZ "n/a\r\n" + +MSG.PIPE .AZ "%3d %5s %s\r\n" *-------------------------------------- -MSG3 .AZ "hNod hFD Type Filepath" -MSG4 .AZ "%03d $%h %5s %s\r\n" +MSG.SFLAGS .AS "bwrlneio" NO.PATH .AZ "(no path)" *-------------------------------------- FD.T.REG .AZ "REG" diff --git a/BIN/LSOF.S.txt b/BIN/LSOF.S.txt index e51b5eb6..d19d0b94 100644 --- a/BIN/LSOF.S.txt +++ b/BIN/LSOF.S.txt @@ -38,6 +38,7 @@ CS.START cld .DA CS.QUIT L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 +L.MSG.NA .DA MSG.NA L.FD.T .DA FD.T.REG .DA FD.T.DIR .DA FD.T.CDEV @@ -54,40 +55,50 @@ CS.INIT clc CS.RUN >LDYA L.MSG0 >SYSCALL PutS - ldx #2 + ldx #1 .1 stx FILE.ID - lda Nod.Table.hFD-2,x + lda hFDs-1,x beq .7 >PUSHW L.MSG1 txa >PUSHA - lda Nod.Table.hFD-2,x + + lda hFDs-1,x >PUSHA >SYSCALL GetMemPtr >STYA ZPFDPtr - + + ldx FILE.ID + lda hFDs.oCnt-1,x + >PUSHA + lda (ZPFDPtr) tax >PUSHW L.FD.T,x ldx FILE.ID - lda Nod.Table.hName-2,x - >SYSCALL GetMemPtr - >PUSHYA + lda hFDs.hName-1,x + bne .5 + + >LDYA L.MSG.NA + bra .6 + +.5 >SYSCALL GetMemPtr - >PUSHBI 6 +.6 >PUSHYA + + >PUSHBI 7 >SYSCALL PrintF .7 ldx FILE.ID inx - inx - cpx #K.NOD.MAX*2+2 + cpx #K.hFD.MAX+1 bne .1 lda #0 @@ -101,8 +112,9 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .AZ "hFILE hFD Type Filepath" -MSG1 .AZ "%3d %3d %5s %s\r\n" +MSG0 .AZ "hFILE hFD Cnt Type Filepath" +MSG1 .AZ "%3d %3d %3d %5s %s\r\n" +MSG.NA .AZ "n/a" FD.T.REG .AZ "REG" FD.T.DIR .AZ "DIR" FD.T.CDEV .AZ "CDEV" diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 8ee20271..25917474 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -116,13 +116,10 @@ CS.RUN lda (pPS),y tax - lsr - bcs .71 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 - + lda (ZPPtr1) cmp #S.FD.T.PIPE bne .71 diff --git a/BIN/NL.S.txt b/BIN/NL.S.txt index bcaf7116..ce33e31b 100644 --- a/BIN/NL.S.txt +++ b/BIN/NL.S.txt @@ -159,10 +159,7 @@ CS.RUN.CheckArgs jsr CS.RUN.NextArg lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) @@ -216,9 +213,7 @@ CS.RUN.OPEN >PUSHYA CS.RUN.ISATTY ldy #S.PS.hStdOut lda (pPS),y tax - lsr - bcc .9 - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 4744fb65..beca371b 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -263,8 +263,8 @@ NSC.Write php rts *-------------------------------------- NSC.Select -* sta $C100 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug lda $C104 Reset DS1216E comparison register with READ A2=1 diff --git a/BIN/NTPDATE.S.txt b/BIN/NTPDATE.S.txt index 426ff73d..95ec7a27 100644 --- a/BIN/NTPDATE.S.txt +++ b/BIN/NTPDATE.S.txt @@ -202,7 +202,7 @@ CheckArgs.A lda iArg bcs .9 >SYSCALL AToL - >PUSHWI 0 + >PUSHWZ >PUSHWI 3600 >FPU uMUL >PULLL Adjust diff --git a/BIN/OD.S.txt b/BIN/OD.S.txt index 71b325a4..7ff9a436 100644 --- a/BIN/OD.S.txt +++ b/BIN/OD.S.txt @@ -160,10 +160,7 @@ CS.RUN.CheckArgs jsr CS.RUN.NextArg lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) @@ -217,9 +214,7 @@ CS.RUN.OPEN >PUSHYA CS.RUN.ISATTY ldy #S.PS.hStdOut lda (pPS),y tax - lsr - bcc .9 - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/PAK.S.txt b/BIN/PAK.S.txt index 795b2ca7..19547978 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -276,7 +276,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath >PUSHW ZPFullPath >LDA.G hArcFile tay - lda Nod.Table.hName-2,y + lda hFDs.hName-1,y >SYSCALL GetMemPtr >PUSHYA >SYSCALL StrCmp diff --git a/BIN/SED.S.txt b/BIN/SED.S.txt index a7d6a602..8ebb9a90 100644 --- a/BIN/SED.S.txt +++ b/BIN/SED.S.txt @@ -147,10 +147,7 @@ CS.RUN.CheckArgs lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/SH.S.CL.txt b/BIN/SH.S.CL.txt index 2f560d29..d8a89d23 100644 --- a/BIN/SH.S.CL.txt +++ b/BIN/SH.S.CL.txt @@ -13,7 +13,7 @@ CL.Init >LDYAI 256 .9 rts *-------------------------------------- CL.PrintPrompt >PUSHW L.PS1 - >PUSHWI 0 + >PUSHWZ >SYSCALL Expand bcs .9 diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index ff3056df..361a0c5b 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -85,7 +85,7 @@ CMD.CD.0 >LDYA ZPArgVBufPtr CMD.CD.HOME >LDYA L.HOME CMD.CD.YA >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs CMD.POPD.RTS >STYA ZPPtr1 @@ -449,7 +449,7 @@ CMD.REN lda (ZPArgVBufPtr) beq CMD.REN.CSYN >PUSHW ZPArgVBufPrev old path - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs CMD.REN.CSYN diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 7a9c4820..4e275820 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -469,7 +469,7 @@ CORE.ArgV.Add lda #C.SPACE >LDYA ZPArgVBufPtr >STYA ZPArgVBufPrev >PUSHYA - >PUSHWI 0 + >PUSHWZ >SYSCALL Expand bcs .9 diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index be7b993f..3a95c024 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -51,16 +51,7 @@ IO.Reset.In sec .8 clc rts *-------------------------------------- -IO.Pipe.Out ldy #IO.DEVFIFO+4 - ldx #4 - -.1 lda DEV,x - sta (pData),y - dey - dex - bpl .1 - - >PUSHEA.G IO.DEVFIFO+5 leave room for /dev/ +IO.Pipe.Out >PUSHEA.G IO.DEVFIFO >PUSHWZ mode >SYSCALL MKFIFO bcs .9 diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 7219f490..0121f949 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -586,8 +586,6 @@ EscChars .AS 'DBAC' EscChars.Cnt .EQ *-EscChars EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS *-------------------------------------- -DEV .AS "/dev/" -*-------------------------------------- CD.. .AZ ".." *-------------------------------------- IN .AZ "IN" diff --git a/BIN/SHUTDOWN.S.txt b/BIN/SHUTDOWN.S.txt index d6f4f3f3..bebc95eb 100644 --- a/BIN/SHUTDOWN.S.txt +++ b/BIN/SHUTDOWN.S.txt @@ -258,15 +258,16 @@ CS.RUN.KILL >PUSHW L.MSG.PS >SYSCALL Kill rts *-------------------------------------- -CS.RUN.DEV ldx #1 +CS.RUN.DEV ldx #K.hFD.MAX + +.1 dex stx Index - -.1 lda Dev.Table-1,x - sta ZPPtr1 - lda Dev.Table,x - sta ZPPtr1+1 + lda hFDs,x beq .7 + >SYSCALL GetMemPtr + >STYA ZPPtr1 + >PUSHW L.MSG.DEV >PUSHB Index @@ -280,12 +281,14 @@ CS.RUN.DEV ldx #1 >PUSHBI 3 >SYSCALL PrintF - -.7 inc Index - inc Index - + ldx Index - cpx #K.DEV.MAX*2+1 + >PUSHB hFDs,x + >PUSHBI IOCTL.CLOSE + >PUSHWZ + >SYSCALL IOCTL + +.7 ldx Index bne .1 rts diff --git a/BIN/STAT.S.txt b/BIN/STAT.S.txt index 795676f1..c9ba8479 100644 --- a/BIN/STAT.S.txt +++ b/BIN/STAT.S.txt @@ -198,7 +198,7 @@ CS.RUN.PRINT.RTS CS.RUN.DUMP lda ArgFile >SYSCALL ArgV >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs CS.RUN.PRINT.RTS diff --git a/BIN/WC.S.txt b/BIN/WC.S.txt index 98f7a10b..4e3d7a22 100644 --- a/BIN/WC.S.txt +++ b/BIN/WC.S.txt @@ -119,7 +119,7 @@ CS.RUN inc ArgIndex ldy #S.PS.hStdIn lda (pPS),y tax - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/XARGS.S.txt b/BIN/XARGS.S.txt index 1287fcac..7d77453a 100644 --- a/BIN/XARGS.S.txt +++ b/BIN/XARGS.S.txt @@ -135,10 +135,7 @@ CS.RUN.CheckArgs lda (pPS),y tax - lsr - bcs .97 - - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL GetMemPtr >STYA ZPPtr1 lda (ZPPtr1) diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index df1024cb..ead4c91d 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -1,26 +1,6 @@ NEW AUTO 3,1 *-------------------------------------- -K.VER .EQ $5E00 94.0 -K.ENV.SIZE .EQ 256 -*-------------------------------------- -K.MEM.ALIGN .EQ 16 -K.MEM.nALIGNm1 .EQ $F0 -*K.MEM.ALIGN .EQ 64 -*K.MEM.nALIGNm1 .EQ $C0 -*-------------------------------------- -K.DEV.MAX .EQ 32 -K.NOD.MAX .EQ 32 -K.OF.MAX .EQ 32 -K.PS.MAX .EQ 32 - -K.USR.MAX .EQ 16 -K.FLT.MAX .EQ 4 - -K.EVT.MAX .EQ 4 -K.TTY.MAX .EQ 8 -K.IRQDEV.MAX .EQ 4 -*-------------------------------------- ZPDRV .EQ $20 32 bytes ZPLIB .EQ $40 32 bytes *-------------------------------------- diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 736939ee..3d7088d2 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -1,27 +1,44 @@ NEW AUTO 3,1 *-------------------------------------- +K.VER .EQ $5E00 94.0 +K.ENV.SIZE .EQ 256 +*-------------------------------------- +K.MEM.ALIGN .EQ 16 +K.MEM.nALIGNm1 .EQ $F0 +*K.MEM.ALIGN .EQ 64 +*K.MEM.nALIGNm1 .EQ $C0 +*-------------------------------------- +K.hFD.MAX .EQ 32 +K.FLT.MAX .EQ 4 +K.USR.MAX .EQ 8 + +K.PS.MAX .EQ 32 + +K.EVT.MAX .EQ 4 +K.TTY.MAX .EQ 8 +K.IRQDEV.MAX .EQ 4 +*-------------------------------------- Mem.Table .EQ $0800 *-------------------------------------- -Dev.Table .EQ $1300 K.DEV.MAX*2 +hFDs .EQ $1300 K.hFD.MAX +hFDs.hName .EQ $1320 K.hFD.MAX +hFDs.oCnt .EQ $1340 K.hFD.MAX *-------------------------------------- -Nod.Table.hName .EQ $1340 K.NOD.MAX*2 -Nod.Table.hFD .EQ $1341 +Flt.Table.pftLO .EQ $1360 K.FLT.MAX +Flt.Table.pftHI .EQ $1364 K.FLT.MAX +Flt.Table.cbLO .EQ $1368 K.FLT.MAX +Flt.Table.cbHI .EQ $136C K.FLT.MAX +*-------------------------------------- +S.Table.hSID .EQ $1370 K.USR.MAX +S.Table.hFile .EQ $1278 K.USR.MAX *-------------------------------------- PS.Table.PID .EQ $1380 K.PS.MAX PS.Table.hPS .EQ $13A0 K.PS.MAX PS.Table.Hits .EQ $13C0 K.PS.MAX PS.Table.Stats .EQ $13E0 K.PS.MAX *-------------------------------------- -S.Table.hSID .EQ $1400 K.USR.MAX -S.Table.hFile .EQ $1410 K.USR.MAX -*-------------------------------------- -Flt.Table.pftLO .EQ $1420 K.FLT.MAX -Flt.Table.pftHI .EQ $1424 K.FLT.MAX -Flt.Table.cbLO .EQ $1428 K.FLT.MAX -Flt.Table.cbHI .EQ $142C K.FLT.MAX -*-------------------------------------- -A2osX.EndTables .EQ $1430 +A2osX.EndTables .EQ $1400 *-------------------------------------- MAN SAVE inc/kernel.i diff --git a/LIB/LIBCIFS.S.IO.txt b/LIB/LIBCIFS.S.IO.txt index 211cb827..05c4f0a3 100644 --- a/LIB/LIBCIFS.S.IO.txt +++ b/LIB/LIBCIFS.S.IO.txt @@ -147,7 +147,7 @@ CIFS.OpenDir >STYA pPath resolved path sta (ZPPtr2),y >PUSHW pPath - >PUSHWI 0 + >PUSHWZ >PUSHB hFD >SYSCALL2 mknod bcc .9 @@ -480,18 +480,18 @@ CIFS2.ReadDir.FillBuf CIFS.CloseReg CIFS.CloseDir tax - lda Nod.Table.hName-2,x + lda hFDs.hName-1,x beq .1 phx - stz Nod.Table.hName-2,x + stz hFDs.hName-1,x >SYSCALL2 FreeMem plx -.1 lda Nod.Table.hFD-2,x - stz Nod.Table.hFD-2,x +.1 lda hFDs-1,x + stz hFDs-1,x >SYSCALL2 FreeMem stz CIFS.Status diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt index 0538dbf1..ae426b88 100644 --- a/LIB/LIBCIFS.S.txt +++ b/LIB/LIBCIFS.S.txt @@ -524,12 +524,12 @@ CIFS.CallBack bit CIFS.Status GetPFD tax phx - lda Nod.Table.hName-2,x + lda hFDs.hName-1,x >SYSCALL2 GetMemPtr >STYA pPath plx - lda Nod.Table.hFD-2,x + lda hFDs-1,x >SYSCALL2 GetMemPtr >STYA pFD rts diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index b9340bb1..47dcc8be 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -378,8 +378,8 @@ LDR.ClkDevScan php dex bne .1 *-------------------------------------- -* sta $C300 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug lda $C104 Reset DS1216E comparison register with READ A2=1 @@ -1085,6 +1085,7 @@ LDR.PrintX bit RROMBNK2 pla sta INVFLG + sta CLRPAGE2 for screen holes proper access rts *-------------------------------------- PALETTE.MAIN .HS 00.02.04.06.08.0A.0C.0E diff --git a/ProDOS.FX/ProDOS.S.NCLK.txt b/ProDOS.FX/ProDOS.S.NCLK.txt index 6768dbb2..97643085 100644 --- a/ProDOS.FX/ProDOS.S.NCLK.txt +++ b/ProDOS.FX/ProDOS.S.NCLK.txt @@ -15,8 +15,8 @@ NCLK.START php sta SETCXROM -* sta $C300 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug lda $C104 Reset DS1216E comparison register with READ A2=1 diff --git a/SBIN/BBSD.S.txt b/SBIN/BBSD.S.txt index f86668b6..6dfcc5fe 100644 --- a/SBIN/BBSD.S.txt +++ b/SBIN/BBSD.S.txt @@ -363,7 +363,7 @@ CS.RUN.CONF.COMLISTEN rts CS.RUN.CONF.MSGFILE >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .9 @@ -374,7 +374,7 @@ CS.RUN.CONF.MSGFILE CS.RUN.CONF.STARTUPFILE >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .9 diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index e5208582..0e8098f0 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -104,8 +104,8 @@ CS.RUN lda hSocket >PUSHB hSocket >PUSHB hSMBContext - >PUSHWI 0 - >PUSHWI 0 + >PUSHWZ + >PUSHWZ >PUSHBI 0 >LIBCALL hLIBCIFS,LIBCIFS.SessionSetup bcs CS.INIT.RTS diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index 7ada3ce6..b584cda6 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -307,7 +307,7 @@ CS.RUN.CONF.LISTEN .9 rts CS.RUN.CONF.DOCUMENTROOT >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs .9 diff --git a/SBIN/INITD.S.txt b/SBIN/INITD.S.txt index 1581b385..7d43cbe7 100644 --- a/SBIN/INITD.S.txt +++ b/SBIN/INITD.S.txt @@ -5,7 +5,7 @@ NEW .OR $2000 .TF sbin/initd *-------------------------------------- -INITDDBG .EQ 1 +INITDDBG .EQ 0 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i @@ -64,6 +64,8 @@ CS.RUN ldy #S.PS.PID cmp #1 bne .9 +* bra .55 + ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF @@ -78,7 +80,7 @@ CS.RUN ldy #S.PS.PID cmp #18 CTRL-R for Root mode bne .1 - >LDYA L.MSG.CTRLR +.55 >LDYA L.MSG.CTRLR >SYSCALL PutS ldx #0 diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index e9204096..1126211a 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -292,7 +292,7 @@ CS.RUN.DumpFile >PUSHYA bcs .7 >PUSHW ZPBufPtr - >PUSHWI 0 + >PUSHWZ >SYSCALL Expand bcc .2 diff --git a/SHARED/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt index 2dc7089b..3be4cbb6 100644 --- a/SHARED/X.FILEENUM.S.txt +++ b/SHARED/X.FILEENUM.S.txt @@ -136,7 +136,7 @@ FilterMatch.NextPtr2 rts *-------------------------------------- InitSrcDirYA >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs FilterMatch.RTS @@ -288,7 +288,7 @@ ResetSrcDir jsr GethDIR *-------------------------------------- .DO X.COPY.TO.DEST=1 InitDstDirYA >PUSHYA - >PUSHWI 0 Allocate + >PUSHWZ Allocate >SYSCALL RealPath bcs InitSrcDirYA.RTS diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index 7c3319dc..ed7c9c5b 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -89,7 +89,7 @@ K.ArgV tax save requested arg# * A = Arg count *\-------------------------------------- K.Arg2ArgV >PULLW ZPPtr2 Get target buffer - >PUSHWI 0 allocate a new buffer + >PUSHWZ allocate a new buffer jsr K.Expand args on stack bcs .9 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 6d596390..7561044c 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -115,14 +115,16 @@ CORE.Events jsr CORE.GetEvents bcs .8 sta KBDSTROBE + and #$0F - tax - lda A2osX.SCRNDEVS,x Get DevID - beq .8 No device claimed this screen cmp A2osX.ASCREEN Same as active screen...nothing to do beq .8 + tax + lda A2osX.SCRNDEVS,x Get DevID + beq .8 No device claimed this screen + >PUSHA >PUSHBI IOCTL.CONTROL request >PUSHWZ Param @@ -216,8 +218,8 @@ CORE.GetEvents lda #Evt.Table lda IRQ.Mode eor #$C0 sta IRQ.Mode - ldx A2osX.ASCREEN - cpx #3 devID 3 is /DEV/CONSOLE + + ldx A2osX.ASCREEN /DEV/CONSOLE bne .22 sta SYS.BASL0+38 diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 9a1a09bc..6ab1980e 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -116,7 +116,7 @@ IO.Open.FLAGS .BS 1 IO.Open.TYPE .BS 1 IO.Open.AUXTYPE .BS 2 IO.hFD .BS 1 -IO.hDevNod .BS 1 +IO.hFILE .BS 1 .ED *-------------------------------------- SaveSM .EQ $100 Aux @@ -159,9 +159,9 @@ Mem.LastSlot .EQ $0806 Z80CODE .EQ $1000 (00000h) Up To $10FF Z80STACK .EQ $10FF (000FFh) Down to $1000 *-------------------------------------- -K.Buf256 .EQ $1100 +K.Buf256 .EQ $1100 512 bytes.... *-------------------------------------- -K.IOBuf .EQ $1200 +K.IOBuf .EQ $1200 ....for ReadDir *-------------------------------------- Mem.MHiMem .EQ A2osX.SYSCALL Mem.XLoMem .EQ $1000 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 2594ba4b..12c3b51e 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -6,84 +6,63 @@ NEW * ## RETURN VALUE * CC = OK, CS = ERROR * Y,A = FD -* X = hDev +* X = hFD *\-------------------------------------- K.GetDevByName >STYA ZPPtr1 requested dev name ldx #1 -.1 lda Dev.Table,x - beq .4 +.1 lda hFDs-1,x + beq .7 - sta pFD+1 - pha + sta IO.hFD + jsr K.GetMemPtr + >STYA pFD - lda Dev.Table-1,x - sta pFD - - clc - adc #S.FD.DEV - tay - - pla - - adc /S.FD.DEV - - jsr .8 - bcs .3 + lda hFDs.hName-1,x + bne .2 jsr DEV.GetPDrv - >LDYA pFD X = hDevNod + lda pFD + clc + adc #S.FD.DEV + sta ZPPtr2 -* clc - rts + lda pFD+1 + adc /S.FD.DEV + sta ZPPtr2+1 + bra .3 + +.2 jsr K.GetMemPtr + >STYA ZPPtr2 -.3 inx no....loop - inx - cpx #K.DEV.MAX*2+1 - bne .1 - -.4 ldx #2 - -.5 lda Nod.Table.hFD-2,x + lda (ZPPtr2) + cmp #'/' REG/DIR beq .7 - lda Nod.Table.hName-2,x - beq .7 - jsr K.GetMemPtr +.3 ldy #$ff - jsr .8 - bcs .7 - - lda Nod.Table.hFD-2,x - jmp K.GetMemPtr Y,A = pPD, X = hDevNod - -.7 inx - inx - cpx #K.NOD.MAX*2+2 - bne .5 - - lda #MLI.E.NODEV -* sec - rts -*-------------------------------------- -.8 >STYA ZPPtr2 - - ldy #$ff - -.80 iny +.4 iny lda (ZPPtr1),y cmp (ZPPtr2),y - bne .89 + bne .7 eor #0 - bne .80 + bne .4 + stx IO.hFILE + >LDYA pFD + ldx IO.hFD clc rts -.89 sec +.7 inx no....loop + cpx #K.hFD.MAX+1 + bne .1 + + lda #MLI.E.NODEV +* sec K.GetDev.9 rts */-------------------------------------- @@ -116,20 +95,21 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S >LDYAI K.S.IOCTL ldx #IOCTL.STATUS *-------------------------------------- -DEV.pDrvJmp jmp (pDrv) + jmp (pDrv) *-------------------------------------- DEV.OPEN ldx #IOCTL.OPEN - lda IO.hDevNod + lda IO.hFD jsr DEV.pDrvJmp bcs .9 - lda IO.hDevNod + lda IO.hFD .9 rts *-------------------------------------- DEV.CLOSE ldx #IOCTL.CLOSE - lda IO.hDevNod - jmp (pDrv) + lda IO.hFD + +DEV.pDrvJmp jmp (pDrv) *-------------------------------------- DEV.READ ldx #IOCTL.READ .HS 2C BIT ABS @@ -162,19 +142,10 @@ DEV.WRITE ldx #IOCTL.WRITE *\-------------------------------------- K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd - ldx #1 + jsr DEV.GetFreeFD + bcs .9 -.10 lda Dev.Table,x - beq .11 - - inx - inx - cpx #K.DEV.MAX*2+1 - bne .10 - - bra .9 - -.11 stx IO.hDevNod + stx IO.hFILE ldy #$ff ldx #S.FD.DEV @@ -188,16 +159,19 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd tay lda #0 - jsr MEM.GetKBuf - bcs .99 + jsr K.GetMem + bcs .9 >STYA pFD >STYA .4+1 - ldx IO.hDevNod - sta Dev.Table,x - tya - sta Dev.Table-1,x + stx IO.hFD + + txa + + ldx IO.hFILE + sta hFDs-1,x + stz hFDs.hName-1,x ldy #S.FD.DEV-1 @@ -222,7 +196,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd lda #S.IOCTL.S.STATUS jsr DEV.GetStatus - bcs .99 + bcs .9 lda K.IOBuf Get Status byte bit #S.DIB.S.IRQ @@ -238,9 +212,9 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd cpx #K.IRQDEV.MAX*2+1 bne .5 -.9 lda #E.OOH * sec -.99 rts + +.9 rts .7 ldy #IOCTL.IRQ+4 lda (pDRV),y @@ -249,13 +223,13 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd lda (pDRV),y sta IRQ.Vectors+1,x -.8 lda IO.hDevNod +.8 lda IO.hFD * clc rts */-------------------------------------- * # IOCTL * ## C -* `int ioctl(short int DevID, short int request, void *param);` +* `int ioctl(short int hFD, short int request, void *param);` * ## ASM * `>PUSHB hDEV` * `>PUSHB request` @@ -264,11 +238,10 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd * ## RETURN VALUE * Y,A = ... *\-------------------------------------- -K.IOCTL ldy #3 hDev +K.IOCTL ldy #3 hFD lda (pStack),y jsr DEV.GetPFD - bcs .9 ldy #2 request lda (pStack),y @@ -279,35 +252,12 @@ K.IOCTL ldy #3 hDev inc pStack jmp (pDrv) - -.9 >RET 4 *-------------------------------------- -DEV.GetPFD sta IO.hDevNod - - tax - - lsr - bcs .1 - - lda Nod.Table.hFD-2,x empty slot ? - beq DEV.GetPFD.9 - - sta IO.hFD +DEV.GetPFD sta IO.hFD jsr K.GetMemPtr >STYA pFD -* clc - rts - -.1 stz IO.hFD - - ldy Dev.Table-1,x - lda Dev.Table,x - beq DEV.GetPFD.9 - - >STYA pFD - DEV.GetPDrv ldy #S.FD.DEV.DRVPTR lda (pFD),y sta pDRV @@ -315,20 +265,17 @@ DEV.GetPDrv ldy #S.FD.DEV.DRVPTR lda (pFD),y sta pDRV+1 - clc - rts - -DEV.GetPFD.9 lda #E.INVH - sec rts *-------------------------------------- -* X = 0 > REG -* X = 1 > DIR -* X = 2 > PIPE -*-------------------------------------- -DEV.MkFD stx .8+1 +DEV.MkFD sta .8+1 S.FD.T - ldy DEV.MkFD.Y,x + jsr DEV.GetFreeFD + bcs .9 + + stx IO.hFILE + + ldy #16 MAX=16 for S.FD.DIR + lda #0 ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr MEM.GetMem.YAX @@ -336,16 +283,43 @@ DEV.MkFD stx .8+1 >STYA pFD stx IO.hFD + + txa + +.7 ldx IO.hFILE -.8 ldx #$ff SELF MODIFIED - lda DEV.MkFD.T,x + sta hFDs-1,x + stz hFDs.hName-1,x + +.8 lda #$ff SELF MODIFIED sta (pFD) X = hFD, A = T * clc .9 rts +*-------------------------------------- +DEV.GetFreeFD ldx #1 -DEV.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE -DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE + clc + +.1 lda hFDs-1,x + beq .8 + + inx + cpx #K.hFD.MAX+1 + bne .1 + + lda #E.OOH +* sec + +.8 rts +*-------------------------------------- +DEV.hFDFree lda IO.hFD + beq .8 + + jmp K.FreeMem + +.8 clc + rts *-------------------------------------- MAN SAVE usr/src/sys/kernel.s.dev diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 4fc3bf08..70981bb0 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -16,7 +16,10 @@ NEW K.OpenDir jsr PFT.CheckPathYA bcs .9 - jmp FS.OPEN.DIR + jsr FS.OPEN.DIR + bcs .9 + + jmp K.FOpen.REGDIR .9 rts */-------------------------------------- @@ -82,9 +85,6 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ? jsr K.ReadDir.GetBufYA bcs DIRENT.RTS - lda #16 - sta K.ReadDir.EC - .1 lda (ZPPtr2) and #$0F beq .4 @@ -144,10 +144,6 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ? clc adc #16 sta ZPPtr2 - bcc .5 - inc ZPPtr2+1 - -.5 dec K.ReadDir.EC bne .1 jsr FS.ClrStat @@ -190,27 +186,22 @@ K.ReadDir.DEV jmp DIRENT.EOF TODO : /dev *-------------------------------------- K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF - >LDYAI 512 Get a 512 bytes buffer for reading dir... - jsr K.GetMem - bcs .99 + lda /K.Buf256 read in + + stz K.MLI.PARAMS+2 For reading + sta K.MLI.PARAMS+3 For reading + + ldy #4 Skip 4 bytes linked list + sty ZPPtr2 PTR to Buffer for PASS #1 + sty ZPPtr3 PTR to Buffer for PASS #2 - stx K.ReadDir.hBlk - >STYA K.MLI.PARAMS+2 For reading - pha - tya -* clc CC from K.GetMem - adc #4 Skip 4 bytes linked list - sta ZPPtr2 PTR to Buffer for PASS #1 - sta ZPPtr3 PTR to Buffer for PASS #2 - pla - adc #0 sta ZPPtr2+1 PTR to Buffer for PASS #1 sta ZPPtr3+1 PTR to Buffer for PASS #2 >LDYAI 512 >STYA K.MLI.PARAMS+4 >MLICALL MLIREAD Read A block from directory - bcs .98 + bcs .99 ldy #S.FD.DIR.EL Check if first run.... lda (pFD),y @@ -256,8 +247,6 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF inc K.ReadDir.EC+1 ...and ProDOS does NOT include header entry in EC bra .4 -.98 jmp K.ReadDir.FreeBlk - .99 rts .2 ldy #S.FD.DIR.EL+3 @@ -281,8 +270,11 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF bne .5 iny - beq .98 no...exit + clc + beq .99 no...exit +*-------------------------------------- * pass #1 compute BufSize... +*-------------------------------------- .5 lda K.ReadDir.EPB sta K.ReadDir.ECIB @@ -332,13 +324,17 @@ K.ReadDir.DIR1 lda (ZPPtr2) X = EntryCount In This Block .8 dec K.ReadDir.ECIB bne K.ReadDir.DIR1 +*-------------------------------------- * pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed) -K.ReadDir.DIR2 jsr K.ReadDir.GetBuf - bcs K.ReadDir.FreeBlk - - lda K.ReadDir.EPB +*-------------------------------------- +K.ReadDir.DIR2 lda K.ReadDir.EPB sta K.ReadDir.ECIB + jsr K.ReadDir.GetBuf + bcc .1 + + rts + .1 lda (ZPPtr3) beq .7 Empty slot, skip @@ -393,27 +389,19 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf dex bpl .81 - jsr K.ReadDir.FreeBlk - K.ReadDir.EXIT ldx K.ReadDir.hBuf txa jmp K.GetMemPtr *-------------------------------------- -K.ReadDir.FreeBlk - pha - lda K.ReadDir.hBlk - jsr K.FreeMem - pla - sec - rts -*-------------------------------------- K.ReadDir.GetBuf - >LDYA K.ReadDir.BufSize Get a BufSize bytes buffer for storing results + >LDYA K.ReadDir.BufSize Get a BufSize bytes buffer for storing results K.ReadDir.GetBufYA jsr K.GetMem0 make sure 0 filled bcs .9 + stx K.ReadDir.hBuf >STYA ZPPtr4 + .9 rts *-------------------------------------- K.ReadDir.ADD. ldx #1 filename="1." diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index 0c7b1347..1ea18550 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -3,13 +3,13 @@ NEW *-------------------------------------- FS.OPEN.REG >MLICALL MLIGETFILEINFO 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 @@ -28,12 +28,12 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO jsr FS.CREATE bcs .9 -.2 ldx #0 +.2 lda #S.FD.T.REG jsr DEV.MkFD bcs .9 jsr FS.MLIOPEN - bcs .99 + bcs FS.OPEN.ERR lda IO.Open.FLAGS bit #O.WRONLY @@ -49,37 +49,33 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO bra .4 .3 >MLICALL MLIGETEOF - bcs .99 + bcs FS.OPEN.ERR >MLICALL MLISETMARK -.4 bcs .99 +.4 bcs FS.OPEN.ERR .5 lda IO.Open.FLAGS and #O.TEXT Text Mode ? - beq .6 + beq .8 lda #$FF sta K.MLI.PARAMS+2 lda #C.CR sta K.MLI.PARAMS+3 >MLICALL MLINEWLINE - bcs .99 - -.6 >LDYAI K.MLI.PATH+1 - >STYA ZPPtr1 - jsr K.MkNod.I - bcc .8 - -.99 pha Save Error Code - jsr FS.CLOSE.REG - pla - sec - -.8 + bcs FS.OPEN.ERR +.8 lda IO.hFD +* clc .9 rts *-------------------------------------- -FS.OPEN.DIR ldx #1 +FS.OPEN.ERR pha Save Error Code + jsr FS.CLOSE.REGDIR + pla + sec + rts +*-------------------------------------- +FS.OPEN.DIR lda #S.FD.T.DIR jsr DEV.MkFD bcs .9 @@ -88,31 +84,23 @@ FS.OPEN.DIR ldx #1 >MLICALL MLIGETFILEINFO bcs .9 - + lda K.MLI.PARAMS+S.FI.T cmp #S.FI.T.DIR bne .99 - - jsr FS.MLIOPEN - bcs .98 - -.8 >LDYAI K.MLI.PATH+1 - >STYA ZPPtr1 - jsr K.MkNod.I - bcc .9 -.98 pha Save Error Code - jsr FS.CLOSE.DIR - pla - sec + jsr FS.MLIOPEN + bcs FS.OPEN.ERR + +.8 lda IO.hFD +* clc rts - + .99 lda #MLI.E.UNSUPST sec .9 rts *-------------------------------------- -FS.CLOSE.REG -FS.CLOSE.DIR ldy #S.FD.REG.REF +FS.CLOSE.REGDIR ldy #S.FD.REG.REF lda (pFD),y beq .1 @@ -122,11 +110,11 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF .1 ldy #S.FD.REG.IOBUF lda (pFD),y - beq .2 + beq .8 jsr K.FreeMem -.2 jmp DEV.Destroy +.8 jmp DEV.hFDFree *-------------------------------------- FS.READ.REG ldx #MLIREAD .HS 2C BIT ABS @@ -138,7 +126,7 @@ FS.WRITE.REG ldx #MLIWRITE sta K.MLI.PARAMS+1 >PULLW K.MLI.PARAMS+4 >PULLW K.MLI.PARAMS+2 - + lda #4 Param Count = 4 for MLIREAD & MLIWRITE jsr GP.MLICall bcs .9 @@ -284,16 +272,16 @@ FS.DirEnt2Stat jsr FS.ClrStat ldy #S.FIEX.AUXTYPE lda (ZPPtr3),y sta K.S.STAT+S.STAT.BLOCKS - asl + asl sta K.S.STAT+S.STAT.SIZE+1 iny lda (ZPPtr3),y sta K.S.STAT+S.STAT.BLOCKS+1 - rol + rol sta K.S.STAT+S.STAT.SIZE+2 - + lda #0 rol K.S.STAT+S.STAT.SIZE+3 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 72cefd68..a39203f0 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -155,7 +155,7 @@ Kernel.Init3 sta SETALTZP jsr SysScrInit bcs * - sta CLRMIXED +* sta CLRMIXED >PUSHWI DEV.CONSOLE >PUSHBI O.RDWR @@ -287,18 +287,14 @@ MemMgrInit >LDYAI Mem.MHiMem stz Mem.LastSlot Reserve Slot #0 sta CLRWRITEAUX - ldx #K.DEV.MAX*2-1 + ldx #K.hFD.MAX-1 -.1 stz Dev.Table,x +.1 stz hFDs,x + stz hFDs.hName,x + stz hFDs.oCnt,x dex bpl .1 - ldx #K.NOD.MAX*2-1 - -.2 stz Nod.Table.hName,x - dex - bpl .2 - ldx #K.PS.MAX*4-1 .3 stz PS.Table.PID,x @@ -361,24 +357,30 @@ SysScrInit.TTYPtrs sec sbc #80*24+S.DCB.TTY sta FD.TTY+S.FD.DEV.DCBPTR - sta .1+1 + sta ZPPtr1 tay lda FD.TTY+S.FD.DEV.DCBPTR+1 sbc /80*24+S.DCB.TTY sta FD.TTY+S.FD.DEV.DCBPTR+1 - sta .1+2 - - ldx #S.DCB.TTY-1 + sta ZPPtr1+1 sta SETWRITEAUX -.1 stz $ffff,x SELF MODIFIED - dex - bpl .1 - >STYA Mem.HiMem >STYA Mem.Free + + ldy #S.DCB.TTY-1 + + lda #0 + +.1 sta (ZPPtr1),y + dey + bne .1 + + lda FD.TTY+S.FD.DEV.DEVID + sta (ZPPtr1) + sta CLRWRITEAUX rts @@ -1123,8 +1125,8 @@ TskMgrInit >LDYAI MSG.TSK sta CLRWRITEAUX - >PUSHWI 0 - >PUSHWI 0 + >PUSHWZ + >PUSHWZ >SYSCALL OpenSession bcs .99 @@ -1321,12 +1323,13 @@ FD.NULL .DA #S.FD.T.CDEV .DA DRV.NULL .DA 0 DCBPTR .DA 0 BUFPTR +*-------------------------------------- FD.NULL.NAME .AZ "null" NAME *-------------------------------------- FD.TTY .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID - .DA #1 DEVID + .DA #0 DEVID .DA 0 BUSPTR .DA DRV.TERM .BS 2 DCBPTR @@ -1343,6 +1346,7 @@ FD.BDEV .DA #S.FD.T.BDEV .BS 2 DRVPTR .DA 0 DCBPTR .DA 0 BUFPTR +*-------------------------------------- FD.BDEV.NAME .AZ "s1d1" *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 683ab9af..f3c110b3 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -428,7 +428,7 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA #0 .DA #$C0 NewStkObj .DA #0 - .DA #0 LoadStkObj + .DA #RRAMWRAMBNK2 LoadStkObj .DA #0 .DA #$C0 GetStkObjPtr .DA #0 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index af23f39a..330db049 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -472,42 +472,6 @@ Mem.IncRefCnt ldy #S.MEM.REFCNT * A = EC *\-------------------------------------- */-------------------------------------- -* # LoadStkObj -* Load a file in AUX memory (Stock Objects) -* PUSHW = PATH (Handled by.... -* PUSHB = MODE ... -* PUSHB = TYPE ... -* PUSHW = AUXTYPE ...FOpen) -* ## RETURN VALUE -* Y,A = File Length -* X = hMem of Loaded Object in AUX mem -*\-------------------------------------- -K.LoadStkObj >SYSCALL2 LoadTxtFile To get ending \0 - bcs .99 - - stx .90+1 - sty .81+1 Save File Len - sta .82+1 - - iny - bne .1 - inc +1 for ending 0 - -.1 jsr MEM.MoveToAux X = AUX hMem - bcs .9 - -.81 ldy #$ff and file len in Y,A -.82 lda #$ff -* clc - rts - -.9 pha -.90 lda #$ff SELF MODIFIED - jsr K.freemem - pla - sec -.99 rts -*/-------------------------------------- * # GetStkObjPtr * ## ASM * `lda hStkObj` diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 70a74cf0..1e8e3f70 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -96,16 +96,22 @@ PFT.YAToMLIPATH >STYA .1+1 PFT.RTS rts *-------------------------------------- PFT.CheckNode4 ldy #4 - .HS 2C BIT ABS -PFT.CheckNode2 ldy #2 PFT.CheckNodeY lda (pStack),y PFT.CheckNodeA stx .80+1 Save SYSCALL # - sta .81+1 Save hFILE + sta IO.hFILE + tax + beq .9 + + cpx #K.hFD.MAX+1 + bcs .9 + + lda hFDs-1,x + beq .9 + jsr DEV.GetPFD - bcs .99 ldy #S.FD.PFT lda (pFD),y @@ -124,7 +130,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # pla discard JSR return @ pla ldx .80+1 restore SYSCALL # - lda .81+1 restore passed hFILE + lda IO.hFILE .7 jmp $ffff SELF MODIFIED @@ -137,10 +143,14 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # sta K.MLI.PARAMS+1 .80 ldx #$ff SELF MODIFIED -.81 lda #$ff SELF MODIFIED +.81 lda IO.hFILE clc .99 rts + +.9 lda #E.INVH + sec + rts *-------------------------------------- MAN SAVE usr/src/sys/kernel.s.pft diff --git a/SYS/KERNEL.S.PIPE.txt b/SYS/KERNEL.S.PIPE.txt index d7b25dea..0c67e71f 100644 --- a/SYS/KERNEL.S.PIPE.txt +++ b/SYS/KERNEL.S.PIPE.txt @@ -13,7 +13,7 @@ PIPE.OPEN ldy #S.FD.PIPE.S inc sta (pFD),y - lda IO.hDevNod + lda IO.hFD clc rts *-------------------------------------- @@ -23,7 +23,6 @@ PIPE.CLOSE ldy #S.FD.PIPE.S lda #$80 sta (pFD),y - clc rts .1 ldy #S.FD.PIPE.hMem @@ -32,7 +31,7 @@ PIPE.CLOSE ldy #S.FD.PIPE.S >SYSCALL2 FreeStkObj -.2 jmp DEV.Destroy +.2 jmp DEV.hFDFree *-------------------------------------- * (pStack)+2 buf * (pStack)+0 count diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index fbd74e82..db04a69d 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -747,6 +747,46 @@ K.Kill.2 ldy #S.PS.hSession .10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS .DA #S.PS.hARGV,#S.PS.hCWD */-------------------------------------- +* # LoadStkObj +* Load a file in AUX memory (Stock Objects) +* PUSHW = PATH (Handled by.... +* PUSHB = MODE ... +* PUSHB = TYPE ... +* PUSHW = AUXTYPE ...FOpen) +* ## RETURN VALUE +* Y,A = File Length +* X = hMem of Loaded Object in AUX mem +*\-------------------------------------- +K.LoadStkObj >PUSHYA + >PUSHBI O.RDONLY + >PUSHBI 0 any type... + + jsr K.LoadFile.1 ... ending \0 + bcs .99 + + stx .90+1 + sty .81+1 Save File Len + sta .82+1 + + iny + bne .1 + inc +1 for ending 0 + +.1 jsr MEM.MoveToAux X = AUX hMem + bcs .9 + +.81 ldy #$ff and file len in Y,A +.82 lda #$ff +* clc + rts + +.9 pha +.90 lda #$ff SELF MODIFIED + jsr K.freemem + pla + sec +.99 rts +*/-------------------------------------- * # LoadTxtFile * Load TXT a file in memory (with ending 0) * ## C @@ -762,7 +802,8 @@ K.Kill.2 ldy #S.PS.hSession K.LoadTxtFile >PUSHYA >PUSHBI O.RDONLY >PUSHBI S.FI.T.TXT - >PUSHWZ Aux type + +K.LoadFile.1 >PUSHWZ Aux type sec .HS 90 BCC @@ -925,10 +966,10 @@ PS.Find.DRV ldx #2 .HS 2C BIT ABS PS.Find.PATH ldx #4 - >STYA PS.Find.4+1 filename to find + >STYA PS.Find.4+1 filename to find >PUSHW PS.VARS,x - >PUSHWI 0 allocate... + >PUSHWZ allocate... >SYSCALL2 GetEnv get value for Search Path bcs PS.Find.RTS @@ -943,7 +984,7 @@ PS.Find.1 ldy #0 Self Modified Index in Search list string PS.Find.2 lda $ffff,y SELF MODIFIED - beq PS.Find.3 end of string, try it.... + beq PS.Find.3 end of string, try it.... iny cmp #':' @@ -1005,7 +1046,6 @@ PS.STAT.YA >PUSHYA rts *-------------------------------------- PS.SHUTDOWN .AZ "shutdown" -*PS.T .AZ " -T 3" PS.VARS .DA .1 .DA .2 .DA .3 @@ -1029,8 +1069,11 @@ K.GetMemStat >STYA ZPPtr1 dey dex bpl .1 + sta SETREADAUX + jsr .2 + sta CLRREADAUX .2 ldx #7 diff --git a/SYS/KERNEL.S.SHARED.txt b/SYS/KERNEL.S.SHARED.txt index ce2a4847..7a05d325 100644 --- a/SYS/KERNEL.S.SHARED.txt +++ b/SYS/KERNEL.S.SHARED.txt @@ -121,12 +121,6 @@ SHARED.P3gY sta CLRREADAUX sta SETREADAUX rts *-------------------------------------- -SHARED.GetScrnDevX - sta CLRREADAUX - lda A2osX.SCRNDEVS,x - sta SETREADAUX - rts -*-------------------------------------- MAN SAVE usr/src/sys/kernel.s.shared LOAD usr/src/sys/kernel.s diff --git a/SYS/KERNEL.S.SOCK.txt b/SYS/KERNEL.S.SOCK.txt index 9a78bf95..3145c9df 100644 --- a/SYS/KERNEL.S.SOCK.txt +++ b/SYS/KERNEL.S.SOCK.txt @@ -1,7 +1,7 @@ NEW AUTO 3,1 *-------------------------------------- -SOCK.OPEN lda IO.hDevNod +SOCK.OPEN lda IO.hFD clc rts *-------------------------------------- diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index ae8230c2..1d135d98 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -88,14 +88,15 @@ K.ChMod.RET3 inc pStack * `>SYSCALL fstat` * ## RETURN VALUE *-------------------------------------- -K.FStat jsr PFT.CheckNode2 +K.FStat ldy #2 + jsr PFT.CheckNodeY bcs K.ChMod.RET3 >PULLW K.Stat.Store.2+1 >PULLA tax - lda Nod.Table.hName-2,x get path + lda hFDs.hName-1,x get path jsr K.GetMemPtr jsr PFT.YAToMLIPATH @@ -193,10 +194,11 @@ K.MKFIFO jsr STAT.PM bcs STAT.RTS ldy #0 + .1 lda STAT.FIFO,y sta (ZPPtr1),y fill pathname buffer iny - cpy #4 + cpy #9 bne .1 lda IO.hFD @@ -208,7 +210,17 @@ K.MKFIFO jsr STAT.PM iny lda #0 sta (ZPPtr1),y + + lda ZPPtr1 + clc + adc #5 skip /dev/ + sta ZPPtr1 + bcc K.MkNod.I + + inc ZPPtr1+1 bra K.MkNod.I +*-------------------------------------- +STAT.FIFO .AS "/dev/fifo" */-------------------------------------- * # MkNod * Create a special or ordinary file. @@ -228,21 +240,21 @@ K.MkNod >PULLB IO.hFD jsr STAT.PM -K.MkNod.I ldx #2 +K.MkNod.I ldx #1 -.1 lda Nod.Table.hFD-2,x empty slot ? +.1 lda hFDs-1,x + cmp IO.hFD beq .2 inx - inx - cpx #K.Nod.MAX+2 + cpx #K.hFD.MAX+1 bne .1 - lda #E.OOH + lda #MLI.E.IO * sec rts -.2 stx IO.hDevNod +.2 stx IO.hFILE >LDYA ZPPtr1 >SYSCALL2 StrDup @@ -250,13 +262,10 @@ K.MkNod.I ldx #2 txa -.3 ldx IO.hDevNod - sta Nod.Table.hName-2,x store path + ldx IO.hFILE + sta hFDs.hName-1,x store path -.4 lda IO.hFD - sta Nod.Table.hFD-2,x store hFD - - txa hDevNod + txa hFILE clc .9 rts */-------------------------------------- @@ -277,7 +286,7 @@ K.Pipe sta .1+1 SIZE HI stx .8+1 save PIPE buffer - ldx #2 + lda #S.FD.T.PIPE jsr DEV.MkFD bcs .9 @@ -292,7 +301,7 @@ K.Pipe sta .1+1 SIZE HI .8 lda #$ff Self Modified sta (pFD),y - txa hFD + lda IO.hFD * clc rts @@ -303,15 +312,12 @@ K.Pipe sta .1+1 SIZE HI pla sec -.99 - rts +.99 rts *-------------------------------------- STAT.PM >PULLW K.S.STAT+S.STAT.MODE >PULLW ZPPtr1 pathname rts *-------------------------------------- -STAT.FIFO .AS "fifo" -*-------------------------------------- MAN SAVE usr/src/sys/kernel.s.stat LOAD usr/src/sys/kernel.s diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 9c9143cd..a90ea0b4 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -359,7 +359,7 @@ K.UngetC clc * CS : A = EC *\-------------------------------------- K.FOpen jsr PFT.CheckPath4 - bcs .9 + bcs K.FOpen.9 >PULLW IO.Open.AUXTYPE >PULLB IO.Open.TYPE @@ -368,10 +368,35 @@ K.FOpen jsr PFT.CheckPath4 inc pStack discard filename inc pStack - jmp UNISTD.Open + jsr UNISTD.Open + bcs K.FOpen.99 -.9 >POP 6 + ldx IO.hFILE + + lda (pFD) + bne K.FOpen.8 + +K.FOpen.REGDIR >LDYAI K.Buf256 + >SYSCALL2 StrDup + bcs K.FOpen.90 + + txa + ldx IO.hFILE + sta hFDs.hName-1,x + +K.FOpen.8 inc hFDs.oCnt-1,x + txa +* clc rts + +K.FOpen.90 pha + jsr UNISTD.Close + pla + sec + rts + +K.FOpen.9 >POP 6 +K.FOpen.99 rts */-------------------------------------- * # FClose * Close a file @@ -386,21 +411,17 @@ K.FOpen jsr PFT.CheckPath4 K.FClose jsr PFT.CheckNodeA bcs K.FRead.RTS - jmp UNISTD.Close -*-------------------------------------- -DEV.Destroy ldx IO.hDevNod - lda Nod.Table.hName-2,x - beq .1 + jsr UNISTD.Close - stz Nod.Table.hName-2,x - jsr K.FreeMem - - ldx IO.hDevNod - -.1 lda Nod.Table.hFD-2,x + ldx IO.hFILE + dec hFDs.oCnt-1,x + bne .8 + + lda hFDs.hName-1,x its a DEV, don't clear FD beq .8 - stz Nod.Table.hFD-2,x + stz hFDs-1,x + stz hFDs.hName-1,x jmp K.FreeMem .8 clc @@ -444,8 +465,8 @@ K.FWrite jsr PFT.CheckNode4 bcs K.FWrite.RET5 jsr UNISTD.Write - bcc K.FRead.RTS + bcc K.FRead.RTS K.FWrite.9 cmp #E.NODATA sec bne K.FRead.RTS IO Error diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 265d9989..f467e436 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -152,7 +152,7 @@ K.realpath ldy #3 >PUSHA lda (pStack),y >PUSHA - >PUSHWI 0 + >PUSHWZ jsr K.expand bcs K.realpath.RET4 diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index ebe6a70c..328d6635 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -22,13 +22,14 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB lda (ZPIOCTL),y tay bra TERM.TOAUX +*-------------------------------------- +TERM.OPEN sta ZPhFD hFD in A for OPEN -TERM.OPEN sta ZPDevID DEV.ID in A for OPEN TERM.CONTROL TERM.CLOSE jsr TERM.GetDCB bra TERM.TOAUX - +*-------------------------------------- TERM.READ TERM.WRITE jsr TERM.GetIOCTLBufCntDCB *-------------------------------------- @@ -90,14 +91,15 @@ TERM.GetBufByte sta CLRREADAUX rts *-------------------------------------- TERM.GetDevName sta CLRREADAUX - - lda Dev.Table-1,x + + lda pFD clc adc #S.FD.DEV - tay + sta TXTPTR - lda Dev.Table,x + lda pFD+1 adc /S.FD.DEV + sta TXTPTR+1 sta SETREADAUX rts diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 49df3752..d6ca07e1 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -8,7 +8,6 @@ CURSOR.BLINK.SPEED .EQ 2 ZPIOCTL .BS 2 ZPBufPtr .BS 2 ZPDCBPtr .BS 2 - ZPCnt .BS 2 ZPBufBL1 .BS 2 @@ -17,7 +16,7 @@ ZPScrBL1 .BS 2 ZPScrBL2 .BS 2 *-------------------------------------- bActive .BS 1 -ZPDevID .BS 1 +ZPhFD .BS 1 ZPTmpBool .BS 1 ZPTmpChar .BS 1 @@ -73,7 +72,7 @@ TERMX.STATUS tya iny * sec eor (ZPDCBPtr),y OUTHEAD - bne .8 + bne .8 bit bActive bpl .7 @@ -99,27 +98,14 @@ TERMX.OPEN.E lda #MLI.E.OPEN TERMX.OPEN jsr TERMX.ISOPENED bne TERMX.OPEN.E - ldx #0 - -.2 jsr SHARED.GetScrnDevX - beq .3 - - inx - cpx #K.TTY.MAX+1 - bne .2 - - lda #E.OOH - sec - rts - -.3 lda ZPDevID + lda (ZPDCBPtr) #S.DCB.TTY.DEVID + tax + lda ZPhFD sta CLRWRITEAUX sta A2osX.SCRNDEVS,x sta SETWRITEAUX - sta (ZPDCBPtr) #S.DCB.TTY.DEVID - ldy #S.DCB.TTY.S lda (ZPDCBPtr),y ora #S.DIB.S.OPENED @@ -128,44 +114,39 @@ TERMX.OPEN jsr TERMX.ISOPENED jsr RESET *-------------------------------------- TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID - + sta CLRWRITEAUX sta A2osX.ASCREEN sta SETWRITEAUX - + sta SETTEXT + sta CLRMIXED jsr TERMX.SCRCPY - lda #0 + lda #0 ldy #S.DCB.TTY.bCURON sta (ZPDCBPtr),y - iny #S.DCB.TTY.bTITLE sta (ZPDCBPtr),y clc rts *-------------------------------------- -TERMX.CLOSE jsr TERMX.ISOPENED +TERMX.CLOSE jsr TERMX.ISOPENED beq .9 lda TERMX.DIB+S.DIB.S sta (ZPDCBPtr),y - ldx #0 -.1 jsr SHARED.GetScrnDevX - cmp (ZPDCBPtr) #S.DCB.TTY.DEVID - bne .2 + lda (ZPDCBPtr) #S.DCB.TTY.DEVID + tax sta CLRWRITEAUX stz A2osX.SCRNDEVS,x sta SETWRITEAUX + clc rts - -.2 inx - cpx #K.TTY.MAX+1 - bne .1 .9 lda #MLI.E.IO sec @@ -197,7 +178,7 @@ TERMX.READ bit bActive is screen active? and #$7F cmp #C.ESC bne .10 - + lda #3 .10 ldx #3 @@ -205,7 +186,7 @@ TERMX.READ bit bActive is screen active? .2 cmp KeyMap,x beq .3 - dex + dex bpl .2 cmp #C.CR @@ -229,7 +210,7 @@ TERMX.READ bit bActive is screen active? pla jsr TERMX.COUT bra .7 - + .6 ldy #S.DCB.TTY.OUTTAIL lda (ZPDCBPtr),y iny @@ -256,9 +237,9 @@ TERMX.READ bit bActive is screen active? bra .70 .8 lda #$ff SELF MODIFIED - + sta CLRWRITEAUX - + ldy #S.IOCTL.BYTECNT sta (ZPIOCTL),y iny @@ -353,9 +334,9 @@ TERMX.OUT.FS ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.bLINEWRAP lda (ZPDCBPtr),y bpl TERMX.OUT.BS.8 - + jsr TERMX.OUT.CR - + jmp TERMX.OUT.LF.1 *-------------------------------------- TERMX.OUT.BS ldy #S.DCB.TTY.CH @@ -453,7 +434,7 @@ TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M .DA TERMX.RTS [ .DA TERMX.RTS ( .DA TERMX.RTS ) -*-------------------------------------- +*-------------------------------------- TERMX.SETM0 lda #0 TERMX.SETM ldy #S.DCB.TTY.M sta (ZPDCBPtr),y @@ -468,9 +449,9 @@ TERMX.CSI ldy #S.DCB.TTY.INBUF inc sta (ZPDCBPtr),y tay - + jsr TERM.GetBufByte - + sta (ZPDCBPtr),y cmp #64 End of Seq ? bcs TERMX.CSI.Exec @@ -527,10 +508,10 @@ TERMX.CSI.Exec stz CsiH .6 cmp CsiCodes,x beq .7 - + dex bpl .6 - + clc rts @@ -553,16 +534,16 @@ TERMX.CSI.Exec stz CsiH .DA Csi.Home H *-------------------------------------- Csi.SetM sec - .HS 90 BCC + .HS 90 BCC *-------------------------------------- Csi.ResetM clc ldx CsiPCnt beq .99 - + dex bne .99 - + ldx CsiH lda CsiP @@ -576,7 +557,7 @@ Csi.ResetM clc ldy #S.DCB.TTY.bCRLF bra .8 - + .1 cmp #7 bne .98 @@ -597,7 +578,7 @@ Csi.ResetM clc *-------------------------------------- Csi.DispAttr ldx CsiPCnt bne .10 - + jmp RESETATTR .10 ldx #0 @@ -639,11 +620,11 @@ Csi.Query ldx CsiPCnt jsr DecOut lda #';' jsr TERMX.COUT - + ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y inc - jsr DecOut + jsr DecOut lda #'R' jsr TERMX.COUT .8 clc @@ -673,7 +654,7 @@ Csi.CUU sec Csi.CUD clc ldy #S.DCB.TTY.CV bra Csi.CU - + Csi.CUF clc .HS B0 BCS Csi.CUB sec @@ -681,22 +662,22 @@ Csi.CUB sec Csi.CU lda CsiPCnt beq .8 - + dec bne .8 - + lda (ZPDCBPtr),y bcs .1 - + adc CsiP sta (ZPDCBPtr),y - + clc rts - + .1 sbc CsiP sta (ZPDCBPtr),y - + .8 clc rts *-------------------------------------- @@ -705,7 +686,7 @@ Csi.CLRSCR ldx CsiPCnt .1 lda CsiP beq .8 - + cmp #1 bne .2 @@ -780,7 +761,7 @@ HOME lda #0 sta (ZPDCBPtr),y clc rts -*-------------------------------------- +*-------------------------------------- TERMX.G0 ldx #$80 .HS 2C BIT ABS TERMX.G1 ldx #$40 @@ -790,12 +771,12 @@ TERMX.G1 ldx #$40 jsr TERM.GetBufByte cmp #'0' beq .1 - + txa eor #$ff and (ZPDCBPtr),y bra .8 - + .1 txa ora (ZPDCBPtr),y .8 sta (ZPDCBPtr),y @@ -807,9 +788,9 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF inc sta (ZPDCBPtr),y tay - + jsr TERM.GetBufByte - + sta (ZPDCBPtr),y cpy #S.DCB.TTY.INBUF+1 CMD ? beq Csi.Home.8 yes, wait for additional bytes @@ -1008,20 +989,20 @@ CLR.8 clc SaveCurPos ldy #S.DCB.TTY.CH jsr .1 - + iny - + .1 lda (ZPDCBPtr),y iny sta (ZPDCBPtr),y rts *-------------------------------------- RestoreCurPos jsr TERMX.CUROFF - + ldy #S.DCB.TTY.CV.SAVE - + jsr .1 - + dey .1 lda (ZPDCBPtr),y @@ -1058,7 +1039,7 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT txa ldy #S.DCB.TTY.SCROLLTOP cmp (ZPDCBPtr),y - bne .1 + bne .1 clc rts @@ -1096,7 +1077,7 @@ TERMX.CBLNK.SET eor #CURSOR.BLINK.SPEED sta (ZPDCBPtr),y rts - + TERMX.CBLNK.OFF jsr GetCharAtCurPos bcc TERMX.CBLNK.SET if not Out of screen @@ -1160,7 +1141,7 @@ TERMX.SETUP.L1X lda ZPDCBPtr clc adc BUF.BL,x sta ZPBufBL1 - + lda ZPDCBPtr+1 adc BUF.BH,x sta ZPBufBL1+1 @@ -1200,7 +1181,7 @@ TERMX.CLRSCR.2 sty .1+1 bit bActive bpl .4 - + sta SETPAGE2 jsr .7 @@ -1208,7 +1189,7 @@ TERMX.CLRSCR.2 sty .1+1 jsr .7 .4 ldy #79 - + .5 sta (ZPBufBL1),y dey bpl .5 @@ -1219,7 +1200,7 @@ TERMX.CLRSCR.2 sty .1+1 .7 ldy #39 .8 sta (ZPScrBL1),y dey - bpl .8 + bpl .8 .9 rts *-------------------------------------- TERMX.Title.ON ldy #S.DCB.TTY.bTITLE @@ -1229,11 +1210,8 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE lda #$ff sta (ZPDCBPtr),y - lda (ZPDCBPtr) #S.DCB.TTY.DEVID - tax jsr TERM.GetDevName - >STYA TXTPTR - + ldx #0 jsr TERMX.SETUP.L1X.SCR @@ -1262,7 +1240,7 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE iny cpy #80 bne .4 - + TERMX.RTS2 rts TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE @@ -1307,7 +1285,7 @@ TERMX.SCRCPY ldx #23 dex bpl .1 rts - + .8 ldy #39 .80 lda $ffff,x SELF MODIFIED @@ -1333,7 +1311,7 @@ TERMX.COPY.XtoL1 ldy #79 .1 lda (ZPBufBL2),y - sta (ZPBufBL1),y + sta (ZPBufBL1),y dey bpl .1 @@ -1351,7 +1329,7 @@ TERMX.COPY.XtoL1 .6 ldy #39 .7 lda (ZPScrBL2),y - sta (ZPScrBL1),y + sta (ZPScrBL1),y dey bpl .7 @@ -1399,13 +1377,13 @@ SetCharAtYX cmp #$40 bcc .3 tay - lda REMAP.E0.FF-$E0,y + lda REMAP.E0.FF-$E0,y sta ZPTmpChar .3 jsr TERMX.SETUP.L1X ply lda ZPTmpChar - sta (ZPBufBL1),y + sta (ZPBufBL1),y bit bActive bpl SetCharAtYX.8 @@ -1440,11 +1418,11 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV bcs .9 Out of screen tay - lda (ZPBufBL1),y + lda (ZPBufBL1),y cmp #$20 bcs .8 - -* clc + +* clc adc #40 remap $00-$1F uppercase .8 clc @@ -1502,7 +1480,7 @@ RESET.VALUES .DA #0 MODE .DA #S.DCB.TTY.OUTBUF OUTTAIL .DA #S.DCB.TTY.OUTBUF OUTHEAD - .DA #S.DCB.TTY.INBUF INBUFFER + .DA #S.DCB.TTY.INBUF INBUFFER *-------------------------------------- TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 diff --git a/SYS/KERNEL.S.UNISTD.txt b/SYS/KERNEL.S.UNISTD.txt index 514b490c..05a24ae4 100644 --- a/SYS/KERNEL.S.UNISTD.txt +++ b/SYS/KERNEL.S.UNISTD.txt @@ -32,20 +32,15 @@ UNISTD.Open ldx #5 /dev/ dex bne .1 *-------------------------------------- -* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE) +* /dev/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE) *-------------------------------------- >LDYAI K.MLI.PATH+6 skip $/dev/ jsr K.GetDevByName bcs .9 - >STYA pFD - - stx IO.hDevNod - lda (pFD) #S.FD.T tax - jmp (.2-2,x) .2 * .DA STDIO.IOERR REG @@ -74,8 +69,9 @@ K.Close jsr DEV.GetPFD UNISTD.Close lda (pFD) #S.FD.T tax jmp (.1,x) -.1 .DA FS.CLOSE.REG - .DA FS.CLOSE.DIR + +.1 .DA FS.CLOSE.REGDIR + .DA FS.CLOSE.REGDIR .DA DEV.CLOSE .DA DEV.CLOSE .DA STDIO.IOERR LNK @@ -96,7 +92,7 @@ UNISTD.Close lda (pFD) #S.FD.T * CC: Y,A = bytes read * CS: A = EC *\-------------------------------------- -K.Read ldy #4 hDev +K.Read ldy #4 hFD lda (pStack),y jsr DEV.GetPFD @@ -104,6 +100,7 @@ K.Read ldy #4 hDev UNISTD.Read lda (pFD) #S.FD.T tax jmp (.1,x) + .1 .DA FS.READ.REG .DA STDIO.IOERR DIR .DA DEV.READ @@ -126,14 +123,15 @@ UNISTD.Read lda (pFD) #S.FD.T * CC: Y,A = bytes written * CS: A = EC *\-------------------------------------- -K.Write ldy #4 hDev +K.Write ldy #4 hFD lda (pStack),y - + jsr DEV.GetPFD UNISTD.Write lda (pFD) #S.FD.T tax jmp (.1,x) + .1 .DA FS.WRITE.REG .DA STDIO.IOERR DIR .DA DEV.WRITE diff --git a/SYS/KM.NSC.S.txt b/SYS/KM.NSC.S.txt index 9f3f27d6..0b01acd4 100644 --- a/SYS/KM.NSC.S.txt +++ b/SYS/KM.NSC.S.txt @@ -60,8 +60,8 @@ NSC.Detect php sta SETCXROM -* sta $C300 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug ldx #8 @@ -76,8 +76,8 @@ NSC.Detect php dex bne .1 -* sta $C300 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug lda $C104 Reset DS1216E comparison register with READ A2=1 @@ -210,8 +210,8 @@ NSCDRV php sta SETCXROM -* sta $C300 - lda $C00B Workaround for Ultrawarp bug + sta $C100 +* lda $C00B Workaround for Ultrawarp bug lda $C104 Reset DS1216E comparison register with READ A2=1