From 35bece276c45f2998200b57b5bdf8bfccb3eb5cf Mon Sep 17 00:00:00 2001 From: burniouf Date: Wed, 7 Jul 2021 16:29:10 +0200 Subject: [PATCH] ACOS:Major update, CHTYP:added PAK support --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ACOS.S.CODE.txt | 82 +++++--------------- BIN/ACOS.S.CORE.txt | 19 +++-- BIN/ACOS.S.EXP.txt | 13 +++- BIN/ACOS.S.FN.txt | 112 +++++++++++++-------------- BIN/ACOS.S.KW.txt | 16 ++-- BIN/ACOS.S.RT.txt | 123 ++++++++++++++++++++++++++--- BIN/ACOS.S.txt | 162 ++++++++++++++++----------------------- BIN/CHTYP.S.txt | 140 +++++++++++++++++++++------------ LIB/LIBCIFS.S.txt | 3 +- 10 files changed, 369 insertions(+), 301 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index caed3a5feddd1331441db6da4d19a0940a118eb8..a3b626e2537319a34b2faae84476e53d5bb02eb0 100644 GIT binary patch delta 35258 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 hSTRV - - >LDYA EXP.ADDR - jsr CODE.PUSHIYA >PUSHW id - - >LDYA ZPStrBuf - jsr CODE.PUSHIYA >PUSHW str - - ldx #SYS.StrVGet - jsr CODE.SYSCALL >SYSCALL StrVGet - - >LDYA ZPStrBuf - jsr CODE.PUSHYA - - rts -*-------------------------------------- * ZPADDR=pInt, Int16 on Stack *-------------------------------------- CODE.INTSET >LDYA ZPADDR @@ -54,22 +34,6 @@ CODE.INTSET >LDYA ZPADDR rts *-------------------------------------- -* EXP.ADDR=pInt -* output : Int16 on Stack -*-------------------------------------- -CODE.INTGET >LDYA EXP.ADDR - jsr CODE.LDYAI - - ldx #0 - -.1 lda CCODE.PUSHWYA,x - jsr CODE.EmitByte - inx - cpx #CCODE.PULLWYA.LEN - bne .1 - - rts -*-------------------------------------- CODE.PULLWS ldx #0 .1 lda CCODE.PULLWS,x @@ -77,7 +41,7 @@ CODE.PULLWS ldx #0 inx cpx #CCODE.PULLWS.LEN bne .1 - + rts *-------------------------------------- CODE.PUSHWS ldx #0 @@ -87,14 +51,14 @@ CODE.PUSHWS ldx #0 inx cpx #CCODE.PUSHWS.LEN bne .1 - + rts *-------------------------------------- CODE.PUSHBI lda #$A9 LDA #imm jsr CODE.EmitByte txa jsr CODE.EmitByte - + jmp CODE.PUSHA *-------------------------------------- CODE.PUSHIYA pha @@ -103,7 +67,7 @@ CODE.PUSHIYA pha pla jsr CODE.EmitByte jsr CODE.PUSHA - + lda #$A9 LDA #imm jsr CODE.EmitByte tya @@ -114,16 +78,26 @@ CODE.PUSHINT16 ldy #1 .1 lda #$A9 LDA #imm jsr CODE.EmitByte - + lda (pStack),y jsr CODE.EmitByte - + jsr CODE.PUSHA dey bpl .1 - + rts *-------------------------------------- +CODE.LDYXI lda #$A0 LDY #imm + jsr CODE.EmitByte + tya + jsr CODE.EmitByte + + lda #$A2 LDX #imm + jsr CODE.EmitByte + txa + jmp CODE.EmitByte +*-------------------------------------- CODE.LDYAI pha lda #$A0 LDY #imm jsr CODE.EmitByte @@ -149,26 +123,6 @@ CODE.PUSHA ldx #0 rts *-------------------------------------- -CODE.FPRINTSTR ldx #0 - -.1 lda CCODE.FPRINTSTR,x - jsr CODE.EmitByte - inx - cpx #CCODE.FPRINTSTR.LEN - bne .1 - - rts -*-------------------------------------- -CODE.FPRINTINT ldx #0 - -.1 lda CCODE.FPRINTINT,x - jsr CODE.EmitByte - inx - cpx #CCODE.FPRINTINT.LEN - bne .1 - - rts -*-------------------------------------- CODE.JSRRT lda #$20 JSR jsr CODE.EmitByte lda J.RT,x @@ -189,7 +143,7 @@ CODE.FPUCALL lda #$A2 LDX #imm *-------------------------------------- CODE.FPRINTCRLF ldx #C.CR jsr CODE.PutChar - ldx #C.LF + ldx #C.LF *-------------------------------------- CODE.PutChar lda #$A9 LDA #imm jsr CODE.EmitByte diff --git a/BIN/ACOS.S.CORE.txt b/BIN/ACOS.S.CORE.txt index 1cd6b11a..b415e41a 100644 --- a/BIN/ACOS.S.CORE.txt +++ b/BIN/ACOS.S.CORE.txt @@ -214,14 +214,17 @@ CORE.Compile jsr CORE.GetChar *-------------------------------------- CORE.KW.JMP jmp (J.ACOS.KW,x) *-------------------------------------- -CORE.FWREF >LDA.G hFWRefBuf +CORE.FWREF >LDYA L.MSG.FWREF + >SYSCALL PutS + + >LDA.G hFWRefBuf >SYSCALL GetMemPtr >STYA ZPInputBufPtr .1 lda (ZPInputBufPtr) beq .8 - sta ZPPtr1+1 +.2 sta ZPPtr1+1 jsr CORE.GetNextChar sta ZPPtr1 @@ -237,7 +240,8 @@ CORE.FWREF >LDA.G hFWRefBuf lda ZPADDR+1 sta (ZPPtr1),y - bra .1 + jsr CORE.GetNextChar skip \0 + bcc .2 .8 clc rts @@ -246,13 +250,12 @@ CORE.FWREF >LDA.G hFWRefBuf >PUSHW ZPInputBufPtr >PUSHBI 2 >SYSCALL PrintF + + lda #E.CSYN sec rts *-------------------------------------- -CORE.Run lda #$60 RTS - sta (ZPCodeBufPtr) - - jsr CORE.Cleanup +CORE.Run jsr CORE.Cleanup lda ZPCodeBufPtr sta ZPPtr1 @@ -277,7 +280,7 @@ CORE.Run lda #$60 RTS >PUSHW ZPPtr2 >PUSHBI 2 >SYSCALL PrintF - + jmp (ZPCodeBufPtr) *-------------------------------------- CORE.LookupOPS lda (ZPInputBufPtr) diff --git a/BIN/ACOS.S.EXP.txt b/BIN/ACOS.S.EXP.txt index cf9fe531..1fafdab8 100644 --- a/BIN/ACOS.S.EXP.txt +++ b/BIN/ACOS.S.EXP.txt @@ -60,17 +60,22 @@ EXP.Eval.R lda EXP.AOPS bra .40 .21 jsr EXP.VARLookup - bcc .22 + bcs .37 +.22 ldy EXP.ADDR + ldx EXP.ADDR+1 + jsr CODE.LDYXI -.22 ldx EXP.TYPE + ldx EXP.TYPE bne .23 - jsr CODE.INTGET + ldx #RT.IntGet.ID + jsr CODE.JSRRT bra .40 -.23 jsr CODE.STRGET +.23 ldx #RT.StrGet.ID + jsr CODE.JSRRT bra .40 *-------------------------------------- diff --git a/BIN/ACOS.S.FN.txt b/BIN/ACOS.S.FN.txt index dc1011bb..beb5e419 100644 --- a/BIN/ACOS.S.FN.txt +++ b/BIN/ACOS.S.FN.txt @@ -3,45 +3,37 @@ NEW .LIST OFF *-------------------------------------- FN.BYTE -FN.CLOCK -FN.DATEd -FN.FLAG FN.CHRd +FN.CLOCK + lda #E.CSYN + sec + rts +*-------------------------------------- +FN.DATEd ldx #RT.DATEd.ID + bra FN.TIMEd.1 + +FN.TIMEd ldx #RT.TIMEd.ID + +FN.TIMEd.1 jsr CODE.JSRRT + + lda #'$' + sta EXP.TYPE + + clc + rts + + lda #E.CSYN + sec + rts +*-------------------------------------- +FN.FLAG +FN.INFO FN.INSTR FN.KEY lda #E.CSYN sec rts *-------------------------------------- -FN.LEN jsr CORE.CheckOP - bcs .99 - - jsr EXP.Eval - bcs .99 - - lda EXP.TYPE - beq .90 - - jsr CORE.CheckCP - bcs .99 - - ldx #0 - -.1 lda CCODE.LEN,x - jsr CODE.EmitByte - inx - cpx #CCODE.LEN.LEN - bne .1 - - stz EXP.TYPE - - clc - rts - -.90 lda #E.TMISMATCH - sec -.99 rts -*-------------------------------------- FN.LEFTd jsr CORE.CheckOP bcs .99 @@ -63,13 +55,8 @@ FN.LEFTd jsr CORE.CheckOP jsr CORE.CheckCP bcs .99 - ldx #0 - -.1 lda CCODE.LEFT,x - jsr CODE.EmitByte - inx - cpx #CCODE.LEFT.LEN - bne .1 + ldx #RT.LEFTd.ID + jsr CODE.JSRRT lda #'$' sta EXP.TYPE @@ -77,6 +64,30 @@ FN.LEFTd jsr CORE.CheckOP clc rts +.90 lda #E.TMISMATCH + sec +.99 rts +*-------------------------------------- +FN.LEN jsr CORE.CheckOP + bcs .99 + + jsr EXP.Eval + bcs .99 + + lda EXP.TYPE + beq .90 + + jsr CORE.CheckCP + bcs .99 + + ldx #RT.LEN.ID + jsr CODE.JSRRT + + stz EXP.TYPE + + clc + rts + .90 lda #E.TMISMATCH sec .99 rts @@ -103,13 +114,8 @@ FN.STRd jsr CORE.CheckOP jsr CORE.CheckCP bcs .99 - ldx #0 - -.1 lda CCODE.STR,x - jsr CODE.EmitByte - inx - cpx #CCODE.STR.LEN - bne .1 + ldx #RT.STRd.ID + jsr CODE.JSRRT lda #'$' sta EXP.TYPE @@ -121,11 +127,6 @@ FN.STRd jsr CORE.CheckOP sec .99 rts *-------------------------------------- -FN.TIMEd - lda #E.CSYN - sec - rts -*-------------------------------------- FN.VAL jsr CORE.CheckOP bcs .99 @@ -138,13 +139,8 @@ FN.VAL jsr CORE.CheckOP jsr CORE.CheckCP bcs .99 - ldx #0 - -.1 lda CCODE.VAL,x - jsr CODE.EmitByte - inx - cpx #CCODE.VAL.LEN - bne .1 + ldx #RT.VAL.ID + jsr CODE.JSRRT stz EXP.TYPE diff --git a/BIN/ACOS.S.KW.txt b/BIN/ACOS.S.KW.txt index 5909d3b9..5e49bc0a 100644 --- a/BIN/ACOS.S.KW.txt +++ b/BIN/ACOS.S.KW.txt @@ -73,9 +73,6 @@ KW.IF jsr EXP.Eval cpx #CCODE.TESTTRUE.LEN bne .1 - lda #$4C JMP abs - jsr CODE.EmitByte - ldy pCCS dey @@ -187,12 +184,13 @@ KW.INFO *-------------------------------------- KW.INPUT jsr CORE.GetNextCharNB bcs .9 - + jsr CORE.CreateOrGetVar bcs .99 - ldx #0 + ldx #RT.INPUT.ID jsr CODE.JSRRT + jsr CODE.STRSET clc @@ -256,13 +254,13 @@ KW.PRINT stz hOut reset to hStdOut lda EXP.TYPE beq .6 - jsr CODE.FPRINTSTR - + ldx #RT.StrOut.ID bra .7 -.6 jsr CODE.FPRINTINT +.6 ldx #RT.IntOut.ID +.7 jsr CODE.JSRRT *-------------------------------------- -.7 jsr CORE.GetCharNB + jsr CORE.GetCharNB bcs .8 .70 jsr CORE.IsEndInst diff --git a/BIN/ACOS.S.RT.txt b/BIN/ACOS.S.RT.txt index cb8d4905..4626fb5e 100644 --- a/BIN/ACOS.S.RT.txt +++ b/BIN/ACOS.S.RT.txt @@ -2,23 +2,80 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -RT.StrSet -*-------------------------------------- -RT.StrGet -*-------------------------------------- - clc +RT.StrSet >PUSHB hStrings + +* >PUSHW id + +* >PUSHW str + + >SYSCALL StrVSet + rts *-------------------------------------- -RT.StrLeft - - - - clc +RT.StrGet >PUSHB hStrings + txa + >PUSHA + tya + >PUSHA + >PUSHW ZPStrBuf + >SYSCALL StrVGet + >PUSHW ZPStrBuf rts *-------------------------------------- -RT.FileOpen +RT.StrOut ldy #S.PS.hStdOut + lda (pPS),y + >PUSHA + ldy #2 + lda (pStack),y + >PUSHA + lda (pStack),y + >PUSHA + >SYSCALL fputs + inc pStack + inc pStack + rts *-------------------------------------- -RT.Input lda #0 +RT.IntSet +*-------------------------------------- +RT.IntGet sty ZPADDR + stx ZPADDR+1 + + ldy #1 + lda (ZPADDR),y + >PUSHA + lda (ZPADDR) + >PUSHA + rts +*-------------------------------------- +RT.IntOut >PUSHW L.MSG.INT16 + ldy #3 + lda (pStack),y + >PUSHA + lda (pStack),y + >PUSHA + >PUSHBI 2 + >SYSCALL PrintF + inc pStack + inc pStack + rts +*-------------------------------------- +RT.DATEd ldx #0 + bra RT.TIMEd.1 + +RT.TIMEd ldx #2 + +RT.TIMEd.1 >PUSHW ZPStrBuf + >PUSHW L.FMT.DATE,x + >PUSHEA.G TimeBuf + + >PUSHEA.G TimeBuf + >SYSCALL Time + + >SYSCALL StrFTime + >PUSHW ZPStrBuf + rts +*-------------------------------------- +RT.INPUT lda #0 sta (ZPStrBuf) stz ZPPtr1 @@ -61,6 +118,48 @@ RT.Input lda #0 .9 rts *-------------------------------------- +RT.LEFTd >PULLW ZPPtr2 cnt + lda (pStack) + sta ZPPtr1 + ldy #1 + lda (pStack),y + sta ZPPtr1+1 + + ldy #0 + +.1 lda (ZPPtr1),y + beq .8 + + iny + cpy ZPPtr2 + bne .1 + + lda #0 + sta (ZPPtr1),y + +.8 rts +*-------------------------------------- +RT.LEN >PULLYA str + >SYSCALL strlen + >PUSHYA + rts +*-------------------------------------- +RT.STRd >PULLYA int + pha + >PUSHW ZPStrBuf + >PUSHW L.MSG.INT16 + pla + >PUSHYA + >PUSHBI 2 + >SYSCALL sprintf + >PUSHW ZPStrBuf + rts +*-------------------------------------- +RT.VAL >PULLYA str + >SYSCALL atoi + >PUSHYA + rts +*-------------------------------------- MAN SAVE usr/src/bin/acos.s.rt LOAD usr/src/bin/acos.s diff --git a/BIN/ACOS.S.txt b/BIN/ACOS.S.txt index 3835b76b..445444af 100644 --- a/BIN/ACOS.S.txt +++ b/BIN/ACOS.S.txt @@ -81,10 +81,13 @@ L.MSG.COMPILING .DA MSG.COMPILING L.MSG.DEBUG .DA MSG.DEBUG L.MSG.TRACE .DA MSG.TRACE L.MSG.ERROR .DA MSG.ERROR -L.MSG.RUN .DA MSG.RUN +L.MSG.FWREF .DA MSG.FWREF L.MSG.FWREFERR .DA MSG.FWREFERR +L.MSG.RUN .DA MSG.RUN L.MSG.STR .DA MSG.STR L.MSG.INT16 .DA MSG.INT16 +L.FMT.DATE .DA FMT.DATE +L.FMT.TIME .DA FMT.TIME *-------------------------------------- L.ACOS.OPS .DA ACOS.OPS L.ACOS.KW .DA ACOS.KW @@ -150,14 +153,15 @@ KWID.IF .EQ *-J.ACOS.KW *-------------------------------------- L.ACOS.FN .DA ACOS.FN J.ACOS.FN .DA FN.BYTE + .DA FN.CHRd .DA FN.CLOCK .DA FN.DATEd .DA FN.FLAG - .DA FN.CHRd + .DA FN.INFO .DA FN.INSTR .DA FN.KEY - .DA FN.LEN .DA FN.LEFTd + .DA FN.LEN .DA FN.MIDd .DA FN.PDL .DA FN.PEEK @@ -169,7 +173,36 @@ J.ACOS.FN .DA FN.BYTE .DA FN.VAL .DA FN.WHENd .DA FN.WIDTH -J.RT .DA RT.INPUT +*-------------------------------------- +J.RT +RT.INPUT.ID .EQ *-J.RT + .DA RT.INPUT +*-------------------------------------- +RT.DATEd.ID .EQ *-J.RT + .DA RT.DATEd +RT.LEFTd.ID .EQ *-J.RT + .DA RT.LEFTd +RT.LEN.ID .EQ *-J.RT + .DA RT.LEN +RT.STRd.ID .EQ *-J.RT + .DA RT.STRd +RT.TIMEd.ID .EQ *-J.RT + .DA RT.TIMEd +RT.VAL.ID .EQ *-J.RT + .DA RT.VAL +*-------------------------------------- +RT.StrSet.ID .EQ *-J.RT + .DA RT.StrSet +RT.StrGet.ID .EQ *-J.RT + .DA RT.StrGet +RT.StrOut.ID .EQ *-J.RT + .DA RT.StrOut +RT.IntSet.ID .EQ *-J.RT + .DA RT.IntSet +RT.IntGet.ID .EQ *-J.RT + .DA RT.IntGet +RT.IntOut.ID .EQ *-J.RT + .DA RT.IntOut .DA 0 *-------------------------------------- * Called once at process creation @@ -228,10 +261,16 @@ CS.RUN.LOOP >SLEEP .4 cmp #MLI.E.EOF bne .9 + lda #$60 RTS + sta (ZPCodeBufPtr) + + lda #0 + sta (ZPFWRefBufPtr) + jsr CS.FClose jsr CORE.FWREF - bcs .9 + bcs .99 jsr CORE.Run bcc .8 @@ -244,7 +283,7 @@ CS.RUN.LOOP >SLEEP .8 lda #0 Exit Code = Success sec - rts +.99 rts *-------------------------------------- CS.RUN.ARGS inc ArgIndex @@ -399,6 +438,15 @@ PrintErrorMsg >LDA.G bTrace >PUSHBI 2 >SYSCALL FPrintF rts +*-------------------------------------- + .INB usr/src/bin/acos.s.code + .INB usr/src/bin/acos.s.core + .INB usr/src/bin/acos.s.exp + .INB usr/src/bin/acos.s.fn + .INB usr/src/bin/acos.s.kw + .INB usr/src/bin/acos.s.rt +*-------------------------------------- +CS.END *-------------------------------------- * Pre-compiled code *-------------------------------------- @@ -443,91 +491,9 @@ CCODE.TESTTRUE lda (pStack) inc pStack plp .1 bne .1+5 + .HS 4C JMP abs CCODE.TESTTRUE.LEN .EQ *-CCODE.TESTTRUE *-------------------------------------- -CCODE.FPRINTSTR ldy #S.PS.hStdOut - lda (pPS),y - >PUSHA - ldy #2 - lda (pStack),y - >PUSHA - lda (pStack),y - >PUSHA - >SYSCALL fputs - inc pStack - inc pStack -CCODE.FPRINTSTR.LEN .EQ *-CCODE.FPRINTSTR -*-------------------------------------- -CCODE.FPRINTINT >PUSHW L.MSG.INT16 - ldy #3 - lda (pStack),y - >PUSHA - lda (pStack),y - >PUSHA - >PUSHBI 2 - >SYSCALL PrintF - inc pStack - inc pStack -CCODE.FPRINTINT.LEN .EQ *-CCODE.FPRINTINT -*-------------------------------------- -CCODE.LEN >PULLW ZPPtr1 - - ldy #$FF - -.1 iny - lda (ZPPtr1),y - bne .1 - - >PUSHYA -CCODE.LEN.LEN .EQ *-CCODE.LEN -*-------------------------------------- -CCODE.LEFT >PULLW ZPPtr2 cnt - lda (pStack) - sta ZPPtr1 - ldy #1 - lda (pStack),y - sta ZPPtr1+1 - - ldy #0 - -.1 lda (ZPPtr1),y - beq .8 - - iny - cpy ZPPtr2 - bne .1 - - lda #0 - sta (ZPPtr1),y -.8 - -CCODE.LEFT.LEN .EQ *-CCODE.LEFT -*-------------------------------------- -CCODE.STR >PULLYA int - pha - >PUSHW ZPStrBuf - >PUSHW L.MSG.INT16 - pla - >PUSHYA - >PUSHBI 2 - >SYSCALL sprintf - >PUSHW ZPStrBuf -CCODE.STR.LEN .EQ *-CCODE.STR -*-------------------------------------- -CCODE.VAL >PULLYA str - >SYSCALL atoi - >PUSHYA -CCODE.VAL.LEN .EQ *-CCODE.VAL -*-------------------------------------- - .INB usr/src/bin/acos.s.code - .INB usr/src/bin/acos.s.core - .INB usr/src/bin/acos.s.exp - .INB usr/src/bin/acos.s.fn - .INB usr/src/bin/acos.s.kw - .INB usr/src/bin/acos.s.rt -*-------------------------------------- -CS.END -*-------------------------------------- * Initialized DATA *-------------------------------------- MSG.GREETINGS .AZ "\r\nACOS-Shell %d.%d\r\n\r\n" @@ -535,15 +501,19 @@ MSG.USAGE .AS "Usage : ACOS