From f796f9a6658fbfc7adcec2743f720186198504b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 14 Dec 2019 19:44:01 +0100 Subject: [PATCH] Kernel 0.93+ : #138 #139 #140.......pffff --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CHMOD.S.txt | 14 +- BIN/CHTYP.S.txt | 44 +++--- BIN/CUT.S.txt | 24 +-- BIN/EDIT.S.CTRL.txt | 139 +---------------- BIN/EDIT.S.SCRN.txt | 326 ++++++++++++++++++--------------------- BIN/EDIT.S.txt | 62 +++++--- BIN/IPCONFIG.S.txt | 26 +++- BIN/LS.S.txt | 13 +- SYS/KERNEL.S.TERM.txt | 20 +-- 10 files changed, 280 insertions(+), 388 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 68d745f98ae8da88348301d101eca7e8e43b9a50..2ead028cd939ff5db2490d2b868943a849e47d92 100644 GIT binary patch delta 49112 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 S58zMWFW_(e5pqs{`+op{aV;PK delta 49376 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%0D)sNvA}v8Ib534yQ5H|X#hJAKq> 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 diff --git a/BIN/CHMOD.S.txt b/BIN/CHMOD.S.txt index 361bc5eb..51c067c0 100644 --- a/BIN/CHMOD.S.txt +++ b/BIN/CHMOD.S.txt @@ -57,25 +57,30 @@ CS.INIT clc CS.RUN >INC.G ArgIndex >SYSCALL ArgV bcs .8 + >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' bne .4 + ldy #1 lda (ZPPtr1),y - ldx OptionList + ldx #OptionVars-OptionList-1 + .2 cmp OptionList,x beq .3 dex - bne .2 + bpl .2 + .9 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf lda #E.SYN sec .99 rts -.3 ldy OptionVars-1,x + +.3 ldy OptionVars,x lda #$80 sta (pData),y bra CS.RUN @@ -86,6 +91,7 @@ CS.RUN >INC.G ArgIndex >LDA.G ArgIndex >STA.G StrMode bra CS.RUN + .5 >LDA.G hSrcBasePath bne .9 >LDYA ZPPtr1 @@ -274,7 +280,7 @@ CS.QUIT jsr LeaveSubDir *-------------------------------------- CS.END *-------------------------------------- -OptionList >PSTR "CRcr" +OptionList .AS "CRcr" OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse *-------------------------------------- MSG.USAGE .AS "Usage : CHMOD mode [File *,? wildcards allowed]\r\n" diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index c16312f2..8de73c53 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -50,6 +50,7 @@ CS.INIT .1 >INC.G ArgCount >SYSCALL ArgV bcs .7 + >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' @@ -57,42 +58,45 @@ CS.INIT ldy #1 lda (ZPPtr1),y - ldx OptionList + ldx #OptionVars-OptionList-1 .2 cmp OptionList,x beq .3 dex bne .2 + .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf lda #E.SYN sec rts -.3 ldy OptionVars-1,x + +.3 ldy OptionVars,x lda #$80 sta (pData),y bra .1 -.4 ldy #index - lda (pData),y +*-------------------------------------- +.4 >LDA.G HexFileType bne .5 - >LDYA ZPPtr1 - jsr InitSrcDirYA - bcc .1 - rts -.5 ldy #HexFileType - lda (pData),y - bne .99 + jsr GetHexFileType bcs .99 bra .1 -.7 ldy #index processed all args - lda (pData),y - beq .99 , no src ? ERROR +.5 >LDA.G hSrcBasePath + bne .99 - ldy #HexFileType - lda (pData),y + >LDYA ZPPtr1 + jsr InitSrcDirYA + bcs .99 + bra .1 +*-------------------------------------- +.7 >LDA.G hSrcBasePath + beq .99 no src ? ERROR + + >LDA.G HexFileType beq .99 we also have a TYPE + >LDYAI 256 >SYSCALL getmem bcs .99 @@ -148,7 +152,7 @@ CS.RUN ldy #S.PS.hStdIn CS.RUN.DIR CS.RUN.DEV .8 jsr GetNextEntry - clc.9 + clc rts *-------------------------------------- CS.RUN.FILE jsr CS.RUN.GetFilePath @@ -303,11 +307,11 @@ IsDigit16 cmp #'0' *-------------------------------------- CS.END *-------------------------------------- -OptionList >PSTR "CRcr" +OptionList .AS "CRcr" OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse *-------------------------------------- -MSG.USAGE .AS "Usage : CHTYP [File *,? wildcards allowed] [File type]\r\n" - .AS " File types : 0xx (Hexadecimal byte),SYS,TXT...\r\n" +MSG.USAGE .AS "Usage : CHTYP type [File *,? wildcards allowed]\r\n" + .AS " type : 0xx (Hexadecimal byte),SYS,TXT...\r\n" .AS " -C : Continue on error\r\n" .AZ " -R : Recurse subdirectories\r\n" MSG.OK .AZ "[OK]" diff --git a/BIN/CUT.S.txt b/BIN/CUT.S.txt index 5075c685..16dba6b6 100644 --- a/BIN/CUT.S.txt +++ b/BIN/CUT.S.txt @@ -218,28 +218,28 @@ CS.RUN.PRINTCR >PUSHBI 0 rts *-------------------------------------- -CS.RUN.OUT.MN ldy #$ff +CS.RUN.OUT.MN ldy #0 ldx StartChar beq .2 -.1 iny - lda (ZPBufPtr),y +.1 lda (ZPBufPtr),y beq CS.RUN.PRINTCR + + iny dex bne .1 -.2 ldx EndChar - beq .8 - -.3 iny - lda (ZPBufPtr),y +.2 lda (ZPBufPtr),y beq .8 cpy EndChar - bne .3 - - lda #0 + beq .3 + + iny + bra .2 + +.3 lda #0 sta (ZPBufPtr),y .8 ldy StartChar @@ -264,7 +264,7 @@ CS.RUN.AddYToBufPtr adc ZPBufPtr sta ZPBufPtr bcc .8 - lda ZPBufPtr+1 + inc ZPBufPtr+1 .8 rts *-------------------------------------- CS.QUIT lda hToClose diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index 39faebcf..58900f28 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -28,29 +28,6 @@ NEW * ^X = Cut Block * ^Y = End Of File *-------------------------------------- -Prompt.Editor cmp #C.DEL - beq Ctrl.DEL - - cmp #C.SPACE - bcc .3 - - pha - jsr BUF.ComputeCOffset - pla - jsr BUF.InsertA - bcs .9 - - jsr SCRN.UpdateCurrentLine - bcs .9 - - jmp Ctrl.FS - -.9 rts - -.3 asl - tax - jmp (J.CTRL,x) -*-------------------------------------- Ctrl.DEL jsr BUF.ComputeCOffset lda BUF.COffset @@ -99,15 +76,15 @@ Ctrl.A >LDYA L.MSG.HELP inc ZPPTR1+1 bra .1 -.8 lda #PromptModeHelp - >STA.G PromptMode - jsr SCRN.UpdateStatusBar - bcs .9 +.8 jsr SCRN.ResetStatusBar + + >PUSHBI 0 + >LDYA L.MSG.STATUSBAR.H + >SYSCALL printf >SYSCALL getchar bcs .9 - >STZ.G PromptMode jmp SCRN.UpDateMain .9 rts @@ -432,9 +409,8 @@ Ctrl.N clc rts *-------------------------------------- -Ctrl.R lda #PromptModeReplace - >STA.G PromptMode - jmp SCRN.UpdateStatusBar +Ctrl.R clc + rts *-------------------------------------- Ctrl.Q lda #$FF >STA.G bExit @@ -574,108 +550,9 @@ Ctrl.Z jsr BUF.ComputeCOffset .8 jsr SCRN.UpdateCurrentLine bcs .9 -.80 jsr SCRN.UpdateStatusBar - bcs .9 - jmp SCRN.GotoCurXCurY -*-------------------------------------- -Prompt.Help >STZ.G PromptMode -Prompt.Help.Upd jsr SCRN.UpdateStatusBar - bcs Prompt.Find.RTS - jmp SCRN.UpdateMain -*-------------------------------------- -Prompt.Find cmp #3 - bne .1 - - >STZ.G PromptMode +.80 jsr SCRN.GotoCurXCurY jmp SCRN.UpdateStatusBar -.1 cmp #C.CR - bne .2 -.2 - clc -.9 -Prompt.Find.RTS rts -*-------------------------------------- -Prompt.Replace cmp #3 - bne .1 - - >STZ.G PromptMode - jsr SCRN.UpdateStatusBar - bcs .9 - rts - -.1 cmp #C.CR - bne .2 -.2 - - clc - -.9 rts -*-------------------------------------- -Prompt.Save cmp #3 Ctrl-C - bne .1 - - >STZ.G PromptMode - bra .80 - -.1 cmp #C.CR - bne .2 - >LDA.G PromptBufPtr - beq .8 - >LDYA pData - >SYSCALL RealPath - bcs .12 - phx - >LDA.G hFileName - beq .11 - >SYSCALL FreeMem - -.11 pla - >STA.G hFileName - >STZ.G PromptMode - jsr FILE.Save - bcc .81 - -.12 jsr SCRN.LineBufInitInv - jmp SCRN.UpdateStatusBarErrA - -.2 cmp #C.DEL - bne .3 - >LDA.G PromptBufPtr - beq .8 - dec - sta (pData),y - - tay - lda #0 - sta (pData),y - bra .80 -.3 cmp #C.SPACE - bcc .8 - - pha - >LDA.G PromptBufPtr - tay - pla - cpy #PROMPTBUFMAX - beq .8 - - sta (pData),y - iny - lda #0 - sta (pData),y - tya - >STA.G PromptBufPtr - bra .80 - -.8 clc - rts - -.81 jsr SCRN.UpdateTopBar - bcs .9 -.80 jmp SCRN.UpdateStatusBar - -.9 rts *-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.CTRL diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index 7c8dc0e1..3b433b8b 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -81,6 +81,106 @@ SCRN.UpdateTopBar .8 jmp SCRN.LineBufOut .9 rts *-------------------------------------- +SCRN.UpdateViewPort + stz bRepaint + +.1 >LDA.G FileX + >CMP.G ScreenX + bcs .2 out of left border ? + + >DEC.G ScreenX yes + sec + ror bRepaint + bra .1 + +.2 bit bRepaint + bmi .30 + +.21 >LDA.G ScreenX + clc + >ADC.G ScreenW + dec + >CMP.G FileX + bcs .3 out of right border ? + + >INC.G ScreenX + sec + ror bRepaint + bra .21 + +.3 bit bRepaint +.30 bmi .6 + +.31 >LDA.G FileY+1 + tax + dey + lda (pData),y A,X = FileY + + >CMP.G ScreenY + iny + txa + sbc (pData),y + bcs .4 out of top border ? + + >DECW.G ScreenY move viewport up one line.... + bit bRepaint + bmi .31 skip scroll, will be repainted later + + jsr SCRN.scrollDn ...and move content one line down + bcc .31 + rts + +.4 bit bRepaint + bmi .6 + +.41 >LDA.G ScreenY+1 + tax + dey + lda (pData),y + + clc + >ADC.G ViewPortHm1 + bcc .5 + + inx + +.5 >CMP.G FileY A,X = screen bottom + txa + iny FileY > screen bottom ? + sbc (pData),y + bcs .6 CS : fileY>= screen bottom + + >INCW.G ScreenY move viewport down one line.... + bit bRepaint + bmi .41 + + jsr SCRN.scrollUp ...and move content one line up + bcc .41 +.9 rts + +.6 >LDA.G FileX + sec + >SBC.G ScreenX + >STA.G CurX + + >LDA.G FileY + sec + >SBC.G ScreenY + >STA.G CurY + + bit bRepaint + bpl .7 + + jsr SCRN.UpdateMain + bcs .9 + +.7 jsr BUF.ComputeCOffset + + jsr SCRN.GotoCurXCurY + bcs .9 + + jmp SCRN.UpdateStatusBar +*-------------------------------------- SCRN.UpdateMain >LDA.G ScreenY sta TmpIndex iny @@ -139,9 +239,10 @@ SCRN.UpdateMain.1 dec TmpCount bne .5 -.8 jsr SCRN.UpdateStatusBar +.8 jsr SCRN.GotoCurXCurY bcs SCRN.UpdateMain.9 - jmp SCRN.GotoCurXCurY + >DEBUG + jmp SCRN.UpdateStatusBar SCRN.UpdateMain.9 rts @@ -262,27 +363,14 @@ SCRN.ToggleSel ldy #SEQ.NORM-SEQS SCRN.ToggleSel.RTS rts *-------------------------------------- -SCRN.UpdateStatusBar - jsr SCRN.LineBufInitBar - - >PUSHBI 1 - >PUSHB.G ScreenH - >PUSHBI 2 - >PUSHW L.MSG.GOTOXY - jsr SCRN.LineBufSprintf - bcs .9 - - >LDA.G ScreenW - tax - - lda #C.SPACE - -.1 jsr SCRN.ToLineBuf - dex - bpl .1 - - lda #C.CR - jsr SCRN.ToLineBuf +SCRN.UpdateStatusBar + lda #$ff + >STA.G bUpdateStatus + clc + rts +*-------------------------------------- +SCRN.DrawStatusBar + jsr SCRN.ResetStatusBar >LDA.G FileY tax @@ -307,63 +395,39 @@ SCRN.UpdateStatusBar >PUSHW L.MSG.STATUSBAR jsr SCRN.LineBufSprintf bcs .9 + + ldx #SEQ.CURRESTORE-SEQS + jsr SCRN.SEQS.ToLineBuf + jmp SCRN.LineBufOut .9 rts *-------------------------------------- -SCRN.UpdateStatusBar.OLD -.2 eor #PromptModeHelp - beq .3 - - >PUSHW pData - lda #2 -.3 >PUSHA - bra SCRN.UpdateStatusBarOut -*-------------------------------------- -SCRN.UpdateStatusBarErrA - >PUSHA +SCRN.ResetStatusBar + jsr SCRN.LineBufInitBar + + ldx #SEQ.CURSAVE-SEQS + jsr SCRN.SEQS.ToLineBuf + >PUSHBI 1 - ldx #10 - bra SCRN.UpdateStatusBarOutErr -SCRN.UpdateStatusBarOut - ldy #PromptMode - lda (pData),y - tax -SCRN.UpdateStatusBarOutErr - >PUSHW L.MSG.STATUSBAR,x - >LDYA LineBufPtr - >SYSCALL sprintf -SCRN.LineBufOutBar + >PUSHB.G ScreenH + >PUSHBI 2 + >PUSHW L.MSG.GOTOXY + jsr SCRN.LineBufSprintf + >LDA.G ScreenW tax - ldy #0 - -.1 lda (LineBufPtr),y - beq .2 - iny + lda #C.SPACE + +.1 jsr SCRN.ToLineBuf dex bne .1 - - bra .4 -.2 lda #C.SPACE - -.3 sta (LineBufPtr),y - iny - dex - bne .3 + lda #C.CR + jsr SCRN.ToLineBuf - lda #0 - sta (LineBufPtr),y - -.4 >PUSHW.G LineBufBase - >PUSHBI 2 - >LDYA L.SEQ.BAR - >SYSCALL printf - bcs .9 - -.9 rts + jmp SCRN.LineBufOut *-------------------------------------- SCRN.CursorAdjust .1 jsr BUF.ComputeCOffset @@ -395,106 +459,6 @@ SCRN.GotoXY txa >SYSCALL printf rts *-------------------------------------- -SCRN.UpdateViewPort - stz bRepaint - -.1 >LDA.G FileX - >CMP.G ScreenX - bcs .2 out of left border ? - - >DEC.G ScreenX yes - sec - ror bRepaint - bra .1 - -.2 bit bRepaint - bmi .30 - -.21 >LDA.G ScreenX - clc - >ADC.G ScreenW - dec - >CMP.G FileX - bcs .3 out of right border ? - - >INC.G ScreenX - sec - ror bRepaint - bra .21 - -.3 bit bRepaint -.30 bmi .6 - -.31 >LDA.G FileY+1 - tax - dey - lda (pData),y A,X = FileY - - >CMP.G ScreenY - iny - txa - sbc (pData),y - bcs .4 out of top border ? - - >DECW.G ScreenY move viewport up one line.... - bit bRepaint - bmi .31 skip scroll, will be repainted later - - jsr SCRN.scrollDn ...and move content one line down - bcc .31 - rts - -.4 bit bRepaint - bmi .6 - -.41 >LDA.G ScreenY+1 - tax - dey - lda (pData),y - - clc - >ADC.G ViewPortHm1 - bcc .5 - - inx - -.5 >CMP.G FileY A,X = screen bottom - txa - iny FileY > screen bottom ? - sbc (pData),y - bcs .6 CS : fileY>= screen bottom - - >INCW.G ScreenY move viewport down one line.... - bit bRepaint - bmi .41 - - jsr SCRN.scrollUp ...and move content one line up - bcc .41 -.9 rts - -.6 >LDA.G FileX - sec - >SBC.G ScreenX - >STA.G CurX - - >LDA.G FileY - sec - >SBC.G ScreenY - >STA.G CurY - - bit bRepaint - bpl .7 - - jsr SCRN.UpdateMain - bcs .9 - -.7 jsr BUF.ComputeCOffset - - jsr SCRN.UpdateStatusBar - bcs .9 - - jmp SCRN.GotoCurXCurY -*-------------------------------------- SCRN.scrollUp >PUSHBI 0 >LDYA L.SEQ.SCROLLUP >SYSCALL printf @@ -573,20 +537,18 @@ SCRN.LineBufInit >LDYA.G LineBufBase >STYA LineBufPtr -.1 lda SEQS,x - -.2 jsr SCRN.ToLineBuf - inx - lda SEQS,x - bne .2 + jsr SCRN.SEQS.ToLineBuf plx rts *-------------------------------------- -SCRN.ToLineBuf sta (LineBufPtr) - inc LineBufPtr - bne .8 - inc LineBufPtr+1 -.8 rts +SCRN.SEQS.ToLineBuf + lda SEQS,x + +.1 jsr SCRN.ToLineBuf + inx + lda SEQS,x + bne .1 + rts *-------------------------------------- SCRN.LineBufSprintf >LDYA LineBufPtr @@ -604,6 +566,12 @@ SCRN.LineBufSprintf .9 rts *-------------------------------------- +SCRN.ToLineBuf sta (LineBufPtr) + inc LineBufPtr + bne .8 + inc LineBufPtr+1 +.8 rts +*-------------------------------------- SCRN.LineBufOut lda #0 sta (LineBufPtr) diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 9caa1528..ca8d3c33 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -44,18 +44,13 @@ TmpByte .BS 1 ZS.END .ED *-------------------------------------- -PromptModeHelp .EQ 2 -PromptModeFind .EQ 4 -PromptModeReplace .EQ 6 -PromptModeSave .EQ 8 -*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA #0 + .DA #S.PS.F.EVENT S.PS.F .DA #0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS @@ -84,7 +79,7 @@ L.MSG.FILETYPES .DA MSG.TXTCR .DA MSG.TXTCRLF .DA MSG.TXTASM L.MSG.STATUSBAR .DA MSG.STATUSBAR - .DA MSG.STATUSBAR.H +L.MSG.STATUSBAR.H .DA MSG.STATUSBAR.H .DA MSG.STATUSBAR.F .DA MSG.STATUSBAR.R .DA MSG.STATUSBAR.S @@ -96,11 +91,6 @@ L.MSG.HELP .DA MSG.HELP J.SAVE .DA FILE.Save.CR .DA FILE.Save.CRLF .DA FILE.Save.ASM -J.PROMPT .DA Prompt.Editor - .DA Prompt.Help - .DA Prompt.Find - .DA Prompt.Replace - .DA Prompt.Save J.CTRL .DA Ctrl.Invalid .DA Ctrl.A .DA Ctrl.B @@ -230,7 +220,18 @@ CS.RUN.LOOP >SYSCALL GetChar sec CS.RUN.RTS rts *-------------------------------------- -CS.DOEVENT sec +CS.DOEVENT lda (pEvent) + bpl .9 is it a TIMER event? + asl + bpl .9 + >LDA.G bUpdateStatus + bpl .9 + + jsr SCRN.DrawStatusBar + + >STZ.G bUpdateStatus + +.9 sec rts *-------------------------------------- CS.QUIT ldy #hLineBuffer @@ -296,13 +297,30 @@ CharIn tax >STA.G EscBuffer .8 clc - rts +.9 rts -.2 pha - >LDA.G PromptMode - tax +.2 cmp #C.DEL + bne .22 + + jmp Ctrl.DEL + +.22 cmp #C.SPACE + bcc .3 + + pha + jsr BUF.ComputeCOffset pla - jmp (J.PROMPT,x) + jsr BUF.InsertA + bcs .9 + + jsr SCRN.UpdateCurrentLine + bcs .9 + + jmp Ctrl.FS + +.3 asl + tax + jmp (J.CTRL,x) *-------------------------------------- CharIn.Esc >STZ.G bEscMode @@ -416,10 +434,12 @@ SEQ.DLG.RIGHT .AS "\e[37;40m" SEQ.DLG.LBL .AZ "\e[0m\e[30;46m" SEQ.DLG.TB .AZ "\e[0m\e[93;44m" SEQ.DLG.BUT .AZ "\e[7m\e[93;44m" -SEQ.INV .AZ "\e[7m" SEQ.EDIT .AS "\e[0m\e[93;44m" +CEOL SEQ.CEOL .AZ "\e[K" SEQ.NORM .AZ "\e[0m" +SEQ.INV .AZ "\e[7m" +SEQ.CURSAVE .AZ "\e7" +SEQ.CURRESTORE .AZ "\e8" *-------------------------------------- SEQ.DETECT .AZ "Querying term caps...\e[999;999H\e[6n" SEQ.RESET .AZ "\ec" @@ -587,9 +607,7 @@ DLG.FIND.LEN .EQ *-DLG.FIND .DUMMY .OR 0 DS.START -PromptBuf .BS PROMPTBUFMAX+1 -PromptBufPtr .BS 1 -PromptMode .BS 1 +bUpdateStatus .BS 1 bExit .BS 1 bSaved .BS 1 bEscMode .BS 1 diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index cfe87002..298713c0 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -131,34 +131,45 @@ CS.RUN.SETUP .1 >INC.G ArgIndex >SYSCALL ArgV bcs .4 + >STYA ZPTmpPtr1 lda (ZPTmpPtr1) cmp #'-' bne .99 + ldy #1 lda (ZPTmpPtr1),y - ldx OptionList + ldx #OptionVars-OptionList-1 + .2 cmp OptionList,x beq .3 + dex - bne .2 + bpl .2 + .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf lda #E.SYN sec rts -.3 ldy OptionVars-1,x + +.3 ldy OptionVars,x lda #$80 sta (pData),y bra .1 +*-------------------------------------- +.4 >LDA.G bSET + bne .41 Force ... -.4 lda IPCFG+S.NETCFG.STATUS + lda IPCFG+S.NETCFG.STATUS bne .5 - lda #$ff no config, force all + +.41 lda #$ff no config, force all >STA.G bETC >STA.G bDHCP + .5 >LDA.G bETC >ORA.G bDHCP beq CS.RUN.DUMP @@ -346,8 +357,8 @@ CS.END LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 *-------------------------------------- -OptionList >PSTR "DEde" -OptionVars .DA #bDHCP,#bETC,#bDHCP,#bETC +OptionList .AS "DdEeSs" +OptionVars .DA #bDHCP,#bDHCP,#bETC,#bETC,#bSET,#bSET *-------------------------------------- MSG.USAGE .AS "Usage : IPCONFIG \r\n" .AS " -D : Try to get IP address from DHCP\r\n" @@ -470,6 +481,7 @@ DS.START ArgIndex .BS 1 bDHCP .BS 1 bETC .BS 1 +bSET .BS 1 DIB .BS S.DIB IOCTL .BS S.IOCTL DCB.NIC .BS S.DCB.NIC diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index e81b1657..1cde4b9a 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -75,18 +75,23 @@ CS.RUN bne .4 ldy #1 lda (ZPPtr1),y - ldx OptionList + + ldx #OptionVars-OptionList-1 + .2 cmp OptionList,x beq .3 dex - bne .2 + bpl .2 + lda #E.SYN sec rts -.3 ldy OptionVars-1,x + +.3 ldy OptionVars,x lda #$80 sta (pData),y bra .1 + .4 >LDYA ZPPtr1 jsr InitSrcDirYA bcc .1 scan for any other args @@ -592,7 +597,7 @@ Mod2CSTR ldy #S.STAT.MODE+1 *-------------------------------------- CS.END *-------------------------------------- -OptionList >PSTR "ACFLRacflr" +OptionList .AS "ACFLRacflr" OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse *-------------------------------------- MSG.DEVEXT .AZ "/%15s S%dD%d Blocks Used:%5D Total:%5D\r\n" diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index c80b53f7..c9e40267 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -870,7 +870,7 @@ RESET.MODE lda #0 rts *-------------------------------------- RESET ldy #S.DCB.TTY.MODE -.1 lda RESET.VALUES-S.DCB.TTY.MODE,y +.1 lda RESET.VALUES-S.DCB.TTY.MODE,y sta (ZPDCBPtr),y iny cpy #S.DCB.TTY.INBUFFER+1 @@ -950,11 +950,12 @@ CLR.8 clc rts *-------------------------------------- SaveCurPos ldy #S.DCB.TTY.CH - lda (ZPDCBPtr),y + + jsr .1 + iny - sta (ZPDCBPtr),y - iny - lda (ZPDCBPtr),y + +.1 lda (ZPDCBPtr),y iny sta (ZPDCBPtr),y rts @@ -962,11 +963,12 @@ SaveCurPos ldy #S.DCB.TTY.CH RestoreCurPos jsr DRV.TERM.CUROFF ldy #S.DCB.TTY.CV.SAVE - lda (ZPDCBPtr),y + + jsr .1 + dey - sta (ZPDCBPtr),y - dey - lda (ZPDCBPtr),y + +.1 lda (ZPDCBPtr),y dey sta (ZPDCBPtr),y rts