From 4c922fed4dd0772c459554709eeec5f524ccb1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 15 Apr 2021 22:52:08 +0200 Subject: [PATCH] Kernel 0.94+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/ACOS.S.KW.txt | 12 +++ BIN/GREP.S.txt | 213 ++++++++++++++++++++++--------------- BIN/TUITEST.S.txt | 82 ++++++++++++++ INC/LIBTUI.I.txt | 35 ++++++ LIB/LIBTUI.S.txt | 110 +++++++++++++++++++ ProDOS.FX/ProDOS.S.XRW.txt | 4 +- 8 files changed, 368 insertions(+), 88 deletions(-) create mode 100644 BIN/TUITEST.S.txt create mode 100644 INC/LIBTUI.I.txt create mode 100644 LIB/LIBTUI.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 4a0206cd54bad0c11611a8d0c75ef98be4e1f7ce..d74e81cb6e4b7a2e05ad41c846ef4b3b7f76cac2 100644 GIT binary patch delta 5176 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 diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index c856cd86e6dc91f6c2ef1c9625515706c02b38df..a4a966faabd1bf1dae682095241b772af7149698 100644 GIT binary patch delta 6671 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 + + >PUSHB hFile + >PUSHW ZPBufPtr + >PUSHWI 256 + >SYSCALL FGetS + bcs .9 + + inc LineNum + bne .2 + + inc LineNum+1 + +.2 jsr CS.RUN.PRINT + + bcc CS.RUN.LOOP + rts + +.9 cmp #MLI.E.EOF + bne .99 + + lda #0 Exit with no Error + +.99 sec +CS.RUN.LOOP.RTS rts +*-------------------------------------- +CS.RUN.CheckArgs + jsr CS.RUN.NextArg + bcs .4 + lda (ZPPtr1) cmp #'-' beq .1 + lda ArgPattern bne .11 + lda ArgIndex sta ArgPattern >LDYA ZPPtr1 >STYA ZPPatternPtr - bra .10 + bra CS.RUN.CheckArgs .11 lda hFile bne .97 @@ -75,8 +111,9 @@ CS.RUN >LDYA ZPPtr1 jsr CS.RUN.OPEN bcs .9 + sta hFile - bra .10 + bra CS.RUN.CheckArgs .1 ldy #1 lda (ZPPtr1),y @@ -84,26 +121,22 @@ CS.RUN ldx #OptionList.Cnt-1 .2 cmp OptionList,x beq .3 + dex bpl .2 + bra .97 + .3 txa beq .98 + lsr tax lda #$80 sta bIgnoreCase-1,x - bra .10 scan for any other args -.97 lda #E.SYN -.98 pha - >PUSHW L.MSG.USAGE - >PUSHBI 0 - >SYSCALL PrintF - pla - sec -.9 rts - -.8 lda hFile + bra CS.RUN.CheckArgs + +.4 lda hFile bne .80 ldy #S.PS.hStdIn @@ -130,80 +163,19 @@ CS.RUN >STYA ZPBufPtr stx hBuf - stz LineNum - stz LineNum+1 -CS.RUN.LOOP >SLEEP - >PUSHB hFile - >PUSHW ZPBufPtr - >PUSHWI 256 - >SYSCALL FGetS - bcs .9 - - inc LineNum - bne .2 - - inc LineNum+1 - -.2 jsr CS.RUN.PRINT - - bcc CS.RUN.LOOP - rts -.9 cmp #MLI.E.EOF - bne .99 - lda #0 Exit with no Error -.99 sec - rts -*-------------------------------------- -CS.RUN.OPEN >PUSHYA - >PUSHBI O.RDONLY+O.TEXT - >PUSHBI S.FI.T.TXT - >PUSHWZ Aux type - >SYSCALL FOpen - bcs .9 - sta hFile +* clc .9 rts -*-------------------------------------- -CS.RUN.PRINT >LDYA ZPBufPtr - >STYA ZPPtr1 -.1 lda (ZPPtr1) - beq .8 - ldy #$ff -.2 iny - lda (ZPPtr1),y - bne .3 - - lda (ZPPatternPtr),y - bne .8 -.3 lda (ZPPatternPtr),y - beq .6 - jsr CS.RUN.toUpper - sta char - lda (ZPPtr1),y - jsr CS.RUN.toUpper - cmp char - beq .2 - inc ZPPtr1 - bne .1 - inc ZPPtr1+1 - bra .1 - -.6 lda bLineNum - bpl .7 - - >PUSHW L.MSG.NUMLINE - >PUSHW LineNum - >PUSHBI 2 +.97 lda #E.SYN +.98 pha + >PUSHW L.MSG.USAGE + >PUSHBI 0 >SYSCALL PrintF - bcs .9 -.7 >LDYA ZPBufPtr - >SYSCALL PutS + pla + sec rts - -.8 clc -.9 rts *-------------------------------------- CS.RUN.NextArg inc ArgIndex lda ArgIndex @@ -211,6 +183,74 @@ CS.RUN.NextArg inc ArgIndex bcs .9 >STYA ZPPtr1 +.9 rts +*-------------------------------------- +CS.RUN.OPEN >PUSHYA + >PUSHBI O.RDONLY+O.TEXT + >PUSHBI S.FI.T.TXT + >PUSHWZ Aux type + >SYSCALL FOpen + bcs .9 + + sta hFile + +.9 rts +*-------------------------------------- +CS.RUN.PRINT >LDYA ZPBufPtr + >STYA ZPPtr1 + +.1 lda (ZPPtr1) + beq .8 + + ldy #$ff + +.2 iny + lda (ZPPtr1),y + bne .3 + + lda (ZPPatternPtr),y + bne .4 + +.3 lda (ZPPatternPtr),y + beq .6 + + jsr CS.RUN.toUpper + sta char + lda (ZPPtr1),y + jsr CS.RUN.toUpper + cmp char + beq .2 + + inc ZPPtr1 + bne .1 + + inc ZPPtr1+1 + bra .1 + +.4 clc not matching + + .HS B0 BCS + +.6 sec matching + + ror + eor bInvertMatch + bpl .8 + + lda bLineNum + bpl .7 + + >PUSHW L.MSG.NUMLINE + >PUSHW LineNum + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + +.7 >LDYA ZPBufPtr + >SYSCALL PutS + rts + +.8 clc .9 rts *-------------------------------------- CS.RUN.toUpper bit bIgnoreCase @@ -241,13 +281,14 @@ CS.DOEVENT sec *-------------------------------------- CS.END *-------------------------------------- -OptionList .AZ "HhIiNn" +OptionList .AZ "HhIiNnVv" OptionList.Cnt .EQ *-OptionList *-------------------------------------- MSG.USAGE .AS "Usage : GREP or CMD|GREP \r\n" .AS " -H : This help screen\r\n" .AS " -I : Ignore Case\r\n" - .AS " -N : Print line Number" + .AS " -N : Print line Number\r\n" + .AS " -V : Invert Match" MSG.CRLF .AZ "\r\n" MSG.NUMLINE .AZ "%5D:" *-------------------------------------- diff --git a/BIN/TUITEST.S.txt b/BIN/TUITEST.S.txt new file mode 100644 index 00000000..8d8db43a --- /dev/null +++ b/BIN/TUITEST.S.txt @@ -0,0 +1,82 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF root/tuitest +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/libtui.i +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +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 Segment Size + .DA #32 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.LIBTUI .DA LIBTUI + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTUI + >SYSCALL LoadLib + bcs .9 + + sta hLIBTUI + +.9 clc + rts +*-------------------------------------- +CS.RUN + + lda #E.SYN + sec + rts +*-------------------------------------- +CS.DOEVENT sec do not discard TIMER event + rts +*-------------------------------------- +CS.QUIT lda hLIBTUI + beq .8 + + >SYSCALL UnloadLib + +.8 clc + rts +*-------------------------------------- +CS.END +*-------------------------------------- +LIBTUI .AZ "libtui" +hLIBTUI .BS 1 +*-------------------------------------- +LBOX1 .DA #10 X1 + .DA #4 Y1 + .DA #20 W + .DA #10 H +LBOX1.Title .AZ "Title" +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END .ED +*-------------------------------------- +MAN +SAVE root/tuitest.s +ASM diff --git a/INC/LIBTUI.I.txt b/INC/LIBTUI.I.txt new file mode 100644 index 00000000..da7faa7b --- /dev/null +++ b/INC/LIBTUI.I.txt @@ -0,0 +1,35 @@ +NEW + AUTO 3,1 +*-------------------------------------- +LIBTUI.Init .EQ 4 +LIBTUI.Close .EQ 6 +*-------------------------------------- +S.OBJ.T .EQ 0 +S.OBJ.T.LBOX .EQ 0 +S.OBJ.F .EQ 1 +S.OBJ.F.bTITLE .EQ %10000000 +S.OBJ.F.bMENU .EQ %01000000 +S.OBJ.F.bSTATUS .EQ %00100000 +S.OBJ.S .EQ 2 +S.OBJ.S.bVISIBLE .EQ %10000000 +* .EQ 3 +S.OBJ.X1 .EQ 4 +S.OBJ.Y1 .EQ 5 +S.OBJ.W .EQ 6 +S.OBJ.H .EQ 7 +S.OBJ.X2 .EQ 8 +S.OBJ.Y2 .EQ 9 +S.OBJ.pTITLE .EQ 10 +S.OBJ.pMENU .EQ 12 +S.OBJ.pSTATUS .EQ 14 +* +S.OBJ .EQ 16 +*-------------------------------------- +S.LBOX.pL .EQ S.OBJ+0 +S.LBOX.Idx .EQ S.OBJ+2 +S.LBOX.Cnt .EQ S.OBJ+4 +* +S.LBOX .EQ S.OBJ+16 +*-------------------------------------- +MAN +SAVE inc/libtui.i diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt new file mode 100644 index 00000000..6bb0fb7e --- /dev/null +++ b/LIB/LIBTUI.S.txt @@ -0,0 +1,110 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF lib/libtui +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/libtui.i +*-------------------------------------- + .DUMMY + .OR ZPLIB +ZPObjPtr .BS 2 +ZPPtr1 .BS 2 + .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 + .DA CS.END-CS.START + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA LIB.LOAD + .DA LIB.UNLOAD + .DA LIBTUI.Init + .DA LIBTUI.Close + .DA 0 +*-------------------------------------- +LIB.LOAD clc + rts +*-------------------------------------- +LIB.UNLOAD clc + rts +*-------------------------------------- +LIBTUI.Init clc + rts +*-------------------------------------- +LIBTUI.Close clc + rts +*-------------------------------------- +LIBTUI.LBOXNew >STYA ZPPtr1 + + >LDYAI S.LBOX + >SYSCALL GetMem + bcs .9 + + >STYA ZPObjPtr + + lda #S.OBJ.T.LBOX + sta (ZPObjPtr) + + ldy #S.OBJ.F + +.1 lda (ZPPtr1),y + sta (ZPObjPtr),y + + cpy #S.OBJ.H+1 + bne .1 + +.8 txa + clc +.9 rts +*-------------------------------------- +LIBTUI.LBOXLoad +*-------------------------------------- +LIBTUI.LBOXFocus +*-------------------------------------- +LIBTUI.LBOXRun +*-------------------------------------- +LIBTUI.LBOXClose + clc + rts +*-------------------------------------- +LIBGUI.SetupX2Y2 + ldy #S.OBJ.X1 + jsr .1 + + ldy #S.OBJ.Y1 + +.1 clc + + lda (ZPObjPtr),y + iny + iny S.OBJ.W/H + adc (ZPObjPtr),y + iny + iny S.OBJ.X2/Y2 + sta (ZPObjPtr),y + rts +*-------------------------------------- +LIBTUI.DrawFrame + +*-------------------------------------- +CS.END +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE usr/src/lib/libtui.s +ASM diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index d8b99109..f27b1455 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -850,8 +850,8 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end jsr XRW.Wait25600usec XRW.SeekPhOff lda IO.D2.Ph0Off,x - nop - nop + ldx A2L + lda IO.D2.RData,x lda IO.D2.Ph0Off,y clc Exit wit CC (recalibrate)