From d85717509b1e1505235c091fb17e0b03ae564e00 Mon Sep 17 00:00:00 2001 From: "Brian J. Bernstein" Date: Wed, 17 Jan 2024 08:41:08 -0500 Subject: [PATCH 1/2] Updated news for Jan 2024 --- .Docs/News.md | 17 +++++++++++++++-- README.md | 19 ++++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/.Docs/News.md b/.Docs/News.md index 1a9612d6..9a433fff 100644 --- a/.Docs/News.md +++ b/.Docs/News.md @@ -1,6 +1,19 @@ # A2osX Multi-Tasking OS for Apple II -### Updated February 10, 2020 +## Latest News 2024-01-17 + +It has been a long time since the news has been updated, but that doesn't mean that development on A2osX has ceased in the last 4 years! We've actually had quite a number of releases over this time. In general, stability has been greatly improved but there have also been additions like BASIC.FX which is a ProDOS BASIC.SYSTEM environment which supports a number of ProDOS FX extensions (RamWorks III and extension commands for starters). + +As far as where things are going now, development is underway on Kernel 1.0 which will finally bring support for breaking past the 128KB barrier of the //e series by supporting RamWorks-type memory cards. In the past, RamWorks boards were supported but would only allow for /RAM type storage. With Kernel 1.0, up to 8MB of RAM can now be used for code and applications! Early builds of the new kernel are expected in 1H 2024. + +With current builds and all going forward, the distributions are only shipped with [ProDOS FX](ProDOS.md) by default. While 2.0.3tc is still available and can be used with A2osX, the recommendation is now to use FX because of the filename case handling in addition to the number of under-the-hood improvements that FX offers. Both FX and 2.0.3tc's clock tables have been updated for 2024. + +We are currently looking for volunteers to help with flushing out the C libraries! A C89-compliant compiler is available, however, the API needs some work to be compliant and can result in changing the kernel's APIs too, so "the sooner, the better" as the saying goes. Want to help? Reach out on the Slack server! + +Finally, we are always looking for people to help! A project as complicated at A2osX requires a lot of testing, but we always need help with creating new applications, libraries, and documentation. If you have some applicable skills, let us know! + + +## Latest News February 10, 2020 A2osX Version 0.93 Release Candidate has been finalized. Media for this release, based on Build 193x are now available. Future STABLE and BLEED builds will be based on work to complete 0.94. Work has already started to make the A2osX API fully C compliant. This will allow a new CSH shell and CC compiler to be added to A2osX as well as an enhanced web server (*httpd*) that can serve active server pages formed by user created CSH scripts. In addition, Double High Graphics Resolution (DHGR) and Mouse drivers are being finalized which will allow developers to create games and new user interfaces for their A2osX applications. @@ -257,4 +270,4 @@ The full A2osX license can be found **[Here](../LICENSE)**. ## Copyright -Copyright 2015 - 2020, Remy Gibert and the A2osX contributors. +Copyright 2015 - 2024, Remy Gibert and the A2osX contributors. diff --git a/README.md b/README.md index 41fa4f97..ee0f4a1a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # A2osX Multi-Tasking OS for Apple II -### Updated May 24, 2020 +### Updated January 17, 2024 -## A2osX 0.94 +## A2osX 0.95 ![](./.screen-shots/ScreenShot.Logo.png) @@ -22,16 +22,21 @@ Consult the **[documentation](#documentation)** section below to find other reso ## News -### KansasFest 2021 +### Lots of updates for 2024! -The A2osX team is proud to present "A2osX and the Languages of Development," a virtual KansasFest 2021 presentation by Patrick Kloepfer, which you can find **[here](https://www.youtube.com/watch?v=5OO9vj991vo)**. +It has been a long time since the news has been updated, but that doesn't mean that development on A2osX has ceased in the last 4 years! We've actually had quite a number of releases over this time. In general, stability has been greatly improved but there have also been additions like BASIC.FX which is a ProDOS BASIC.SYSTEM environment which supports a number of ProDOS FX extensions (RamWorks III and extension commands for starters). -### Upcoming Release - 0.94 Stable Alpha +As far as where things are going now, development is underway on Kernel 1.0 which will finally bring support for breaking past the 128KB barrier of the //e series by supporting RamWorks-type memory cards. In the past, RamWorks boards were supported but would only allow for /RAM type storage. With Kernel 1.0, up to 8MB of RAM can now be used for code and applications! Early builds of the new kernel are expected in 1H 2024. -The A2osX Team is preparing to issue the first Stable Alpha of A2osX Version 0.94. This new version will include an updated version of ProDOS FX, further kernel enhancements to improve memory usage and for the first time an included Assembler so developers can edit, assemble and test problems all from with A2osX. We are inviting interested developers and testers to [join us on Slack!](#join-us-on-slack) +With current builds and all going forward, the distributions are only shipped with [ProDOS FX](ProDOS.md) by default. While 2.0.3tc is still available and can be used with A2osX, the recommendation is now to use FX because of the filename case handling in addition to the number of under-the-hood improvements that FX offers. Both FX and 2.0.3tc's clock tables have been updated for 2024. + +We are currently looking for volunteers to help with flushing out the C libraries! A C89-compliant compiler is available, however, the API needs some work to be compliant and can result in changing the kernel's APIs too, so "the sooner, the better" as the saying goes. Want to help? Reach out on the Slack server! + +Finally, we are always looking for people to help! A project as complicated at A2osX requires a lot of testing, but we always need help with creating new applications, libraries, and documentation. If you have some applicable skills, let us know! If you would like to read all the past news articles for A2osX, you can read the news article found **[here](.Docs/News.md)**. + ## **Visit us at [A2osX](http://www.a2osx.com)** This is just a place holder and plug for our [A2osX](http://www.a2osx.com) internet site. Stay tuned here for news about this site. We have created a Page to discuss A2osX on **[Facebook](https://www.facebook.com/A2osx-372512896625840/)** and have a new **[Twitter](https://twitter.com/A2Osx)** handle to test new A2osX features which will soon be used as a messaging channel, so please follow. We have created a new forum for discussing A2osX, features, examples, use cases, etc. It can be found on **[Google Groups](https://groups.google.com/forum/#!forum/a2osx)**. @@ -75,4 +80,4 @@ The full A2osX license can be found **[Here](LICENSE)**. ## Copyright -Copyright 2015 - 2020, Remy Gibert and the A2osX contributors. +Copyright 2015 - 2024, Remy Gibert and the A2osX contributors. From 34f9969c0c030b6640da9772b536e55e3f9cfb9f Mon Sep 17 00:00:00 2001 From: burniouf Date: Wed, 17 Jan 2024 22:04:13 +0100 Subject: [PATCH 2/2] LIBTUI: Bugfix in TLINE BASIC.FX: bugfix in PATH, relocation code, Added Toolbox function "printf" --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BASIC.FX/BASIC.S.C.txt | 20 ++++++------- BASIC.FX/BASIC.S.GP..txt | 4 ++- BASIC.FX/BASIC.S.XR.txt | 6 ++-- BASIC.FX/BASIC.S.txt | 6 +++- BASIC.FX/TEST.S.txt | 29 ++++++++++++++----- BIN/TUITEST.S.txt | 61 +++++++++++++++------------------------ INC/BS.I.txt | 2 ++ LIB/LIBTUI.S.CBOX.txt | 4 +-- LIB/LIBTUI.S.TLINE.txt | 14 +++++++-- SHARED/X.PRINTF.S.txt | 2 +- 11 files changed, 82 insertions(+), 66 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 928d63b62b73a70467d2bb117f1b2a4299165cff..810982b9fee4a184a60b6df5a1ed70d3fd08197a 100644 GIT binary patch delta 273876 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

J~EUW|JDy1csDsu9EVL)g5uyKcFUGC)zxQI) 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 diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index da5de054..a021770a 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -1523,14 +1523,14 @@ BS.KW.MEM jsr MON.CROUT sta $260+11 lda #0 - sta XBC10 - -.2 ldx #BSX.Mem.X + +.2 pha + ldx #BSX.Mem.X jsr BS.ToAUX jsr BS.LINEBUFOUT - inc XBC10 - lda XBC10 + pla + inc cmp #6 bne .2 @@ -1763,16 +1763,16 @@ BS.KW.PATH lda GP.FoundBITS jsr BS.ToAUX jsr MON.CROUT - ldx #$00 + ldx #$ff -.1 cpx BS.CMDBUF.LEN +.1 inx + cpx BS.CMDBUF.LEN beq .2 - lda BS.CMDBUF+1,x + lda BS.CMDBUF,x ora #$80 jsr MON.COUT - inx - bne .1 + bra .1 .2 jsr MON.CROUT jsr MON.CROUT diff --git a/BASIC.FX/BASIC.S.GP..txt b/BASIC.FX/BASIC.S.GP..txt index 467c80a8..04edba3f 100644 --- a/BASIC.FX/BASIC.S.GP..txt +++ b/BASIC.FX/BASIC.S.GP..txt @@ -154,7 +154,9 @@ GP.MLIERR2 lda BS.BIERRTBL,x GP.COPYRIGHT .AS -"COPYRIGHT APPLE, 1983" jmp BS.GETBUFR GP.GETBUFR jmp BS.FREEBUFR GP.FREEBUFR - .BS 5 GP.RSHIMEM + .BS 1 GP.RSHIMEM + .BS 1 + jmp (BS.TBOX,x) GP.TBOX *-------------------------------------- MAN SAVE usr/src/basic.fx/basic.s.gp diff --git a/BASIC.FX/BASIC.S.XR.txt b/BASIC.FX/BASIC.S.XR.txt index 035d53e9..754f15e4 100644 --- a/BASIC.FX/BASIC.S.XR.txt +++ b/BASIC.FX/BASIC.S.XR.txt @@ -20,11 +20,9 @@ BSX.Rel lda GP.MLIRW.DATAPTR sbc GP.FIAUXTYPE+1 sta BSX.RelOfs+1 - ldy #2 - lda (ZP.A1L),y + lda GP.FIAUXTYPE sta BSX.RelStart - iny - lda (ZP.A1L),y + lda GP.FIAUXTYPE+1 sta BSX.RelStart+1 ldy #10 diff --git a/BASIC.FX/BASIC.S.txt b/BASIC.FX/BASIC.S.txt index 7cd0aa16..2b612a56 100644 --- a/BASIC.FX/BASIC.S.txt +++ b/BASIC.FX/BASIC.S.txt @@ -18,7 +18,7 @@ NEW .INB inc/as.i .INB inc/mon.i *-------------------------------------- -HIMEM .EQ $A000 +HIMEM .EQ $9F00 LOWERCASE .EQ 1 *-------------------------------------- ZPPtr1 .EQ 0 @@ -101,6 +101,10 @@ LDR.MAIN.DST .EQ * .INB usr/src/basic.fx/basic.s.a .INB usr/src/basic.fx/basic.s.b .INB usr/src/basic.fx/basic.s.c + +BS.TBOX .DA PrintFYA + .INB usr/src/shared/x.printf.s + .INB usr/src/basic.fx/basic.s.d MAIN.LEN .EQ *-LDR.MAIN.DST .EP diff --git a/BASIC.FX/TEST.S.txt b/BASIC.FX/TEST.S.txt index c3bbc17d..00b6e699 100644 --- a/BASIC.FX/TEST.S.txt +++ b/BASIC.FX/TEST.S.txt @@ -24,30 +24,43 @@ HEADER cld Allows BRUN at ORG=$2000 .DA 0 .DA 0 spare....16 bytes header *-------------------------------------- -R.MSG .DA MSG +R.MSG.HELLO .DA MSG.HELLO +R.MSG.RELOC .DA MSG.RELOC .DA 0 *-------------------------------------- CODE.START ldx #0 -.1 lda MSG,x ABS relocation required +.1 lda MSG.HELLO,x ABS relocation required beq .2 jsr MON.COUT inx bne .1 -.2 - - - +.2 lda R.MSG.HELLO + pha + lda R.MSG.HELLO+1 + pha + + lda HEADER+2 + pha + lda HEADER+3 + pha + + ldy R.MSG.RELOC + lda R.MSG.RELOC+1 + ldx #GP.TBOX.PrintF + jsr GP.TBOX .8 clc rts CODE.END .EQ * *-------------------------------------- -MSG .CZ -"\r\rHello from test EXT command.\r\r" - +MSG.HELLO .CZ -"\r\rHello from test EXT command.\r\r" +MSG.RELOC .CS "Code relocated at $%H\r" + .CZ "Data relocated at $%H\r" + DATA.END .EQ * *-------------------------------------- MAN diff --git a/BIN/TUITEST.S.txt b/BIN/TUITEST.S.txt index ff49e66e..aa475b82 100644 --- a/BIN/TUITEST.S.txt +++ b/BIN/TUITEST.S.txt @@ -52,6 +52,7 @@ L.TBOX1.Status .DA TBOX1.Status L.LBOX1.List .DA LBOX1.List L.LABEL.Label .DA LABEL.Label +L.TLINE.Default .DA TLINE.Default L.RADIO1.List .DA RADIO1.List L.CBOX1.Label .DA CBOX1.Label L.BUTQ.Label .DA BUTQ.Label @@ -215,6 +216,10 @@ CS.TLINE.Init >PUSHB hSCRN hParent >PUSHWI 65 Len >LIBCALL hLIBTUI,LIBTUI.NewTLine + >PUSHEA.G TLINE.Buf + >PUSHW L.TLINE.Default + >SYSCALL StrCpy + .9 rts *-------------------------------------- CS.RADIO.Init >PUSHB hSCRN hParent @@ -360,46 +365,28 @@ SCRN.Status .AZ "Status bar..." TBOX1.Title .AZ "Text Box Title" TBOX1.Status .AZ "Text Box Status" *-------------------------------------- -LBOX1.List .AS "Item 1" - .DA #C.CR - .AS "Item 2" - .DA #C.CR - .AS "Item 3" - .DA #C.CR - .AS "Item 4" - .DA #C.CR - .AS "Item 5" - .DA #C.CR - .AS "Item 6 very long line" - .DA #C.CR - .AS "Item 7" - .DA #C.CR - .AS "Item 8" - .DA #C.CR - .AS "Item 9" - .DA #C.CR - .AS "Item 10" - .DA #C.CR - .AS "Item 11" - .DA #C.CR - .AS "Item 12" - .DA #C.CR - .AS "Item 13" - .DA #C.CR - .AS "Item 14 last one" - .DA #0 +LBOX1.List .CS "Item 1\r" + .CS "Item 2\r" + .CS "Item 3\r" + .CS "Item 4\r" + .CS "Item 5\r" + .CS "Item 6 very long line\r" + .CS "Item 7\r" + .CS "Item 8\r" + .CS "Item 9\r" + .CS "Item 10\r" + .CS "Item 11\r" + .CS "Item 12\r" + .CS "Item 13\r" + .CZ "Item 14 last one\r" *-------------------------------------- LABEL.Label .AZ "This is a label." *-------------------------------------- -RADIO1.List .DA #C.ESC - .AS "[91mRed" - .DA #C.CR - .DA #C.ESC - .AS "[92mGreen" - .DA #C.CR - .DA #C.ESC - .AS "[96mBlue" - .DA #0 +TLINE.Default .AZ "This is a Line." +*-------------------------------------- +RADIO1.List .CS "\e[91mRed\r" + .CS "\e[92mGreen\r" + .CZ "\e[96mBlue\r" *-------------------------------------- CBOX1.Label .AZ "Check Me" *-------------------------------------- diff --git a/INC/BS.I.txt b/INC/BS.I.txt index 63054f93..0bf6e5ad 100644 --- a/INC/BS.I.txt +++ b/INC/BS.I.txt @@ -180,6 +180,8 @@ GP.CCCSPARE .EQ $BEDF GP.GETBUFR .EQ $BEF5 GP.FREEBUFR .EQ $BEF8 GP.RSHIMEM .EQ $BEFB +GP.TBOX .EQ $BEFD +GP.TBOX.PrintF .EQ 0 *-------------------------------------- MAN SAVE inc/bs.i diff --git a/LIB/LIBTUI.S.CBOX.txt b/LIB/LIBTUI.S.CBOX.txt index 70b5f725..15bc1d8c 100644 --- a/LIB/LIBTUI.S.CBOX.txt +++ b/LIB/LIBTUI.S.CBOX.txt @@ -92,7 +92,7 @@ CBOX.Run ldy #S.BUT.HotKey sec rts *-------------------------------------- -CBOX.Draw ldx #'(' +CBOX.Draw ldx #'<' ldy #S.OBJ.S lda (ZPObjPtr),y @@ -121,7 +121,7 @@ CBOX.Draw ldx #'(' .11 txa jsr LB.COut - ldx #')' + ldx #'>' plp bpl .12 diff --git a/LIB/LIBTUI.S.TLINE.txt b/LIB/LIBTUI.S.TLINE.txt index f283ad78..2e3409d2 100644 --- a/LIB/LIBTUI.S.TLINE.txt +++ b/LIB/LIBTUI.S.TLINE.txt @@ -43,6 +43,16 @@ TLINE.Run ldy #S.OBJ.S bpl .9 S.OBJ.S.bActive jsr OBJ.GetBuf + + ldy #$ff + +.1 iny + lda (ZPPtr1),y + bne .1 + + tya + ldy #S.TLINE.Len + sta (ZPObjPtr),y lda (pStack) Event cmp #C.DEL @@ -82,14 +92,14 @@ TLINE.Run ldy #S.OBJ.S ply -.1 dey +.3 dey lda (ZPPtr1),y iny sta (ZPPtr1),y dey cpy TempW - bne .1 + bne .3 lda (pStack) ldy TempW diff --git a/SHARED/X.PRINTF.S.txt b/SHARED/X.PRINTF.S.txt index 128a9217..452194ec 100644 --- a/SHARED/X.PRINTF.S.txt +++ b/SHARED/X.PRINTF.S.txt @@ -74,7 +74,7 @@ PrintFYA.92 ldx #$83 RRAMWRAMBNK2 lda $C000,x PrintFYA.98 lda #$ff Self modified RTS HI pha -PrintFYA.99 lda #$ff Self modified RTS LOPrintFYAPrintFYA +PrintFYA.99 lda #$ff Self modified RTS LO pha rts