diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index caed3a5f..a3b626e2 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ACOS.S.CODE.txt b/BIN/ACOS.S.CODE.txt index 3435b0fb..f25165c8 100644 --- a/BIN/ACOS.S.CODE.txt +++ b/BIN/ACOS.S.CODE.txt @@ -19,26 +19,6 @@ CODE.STRSET jsr CODE.PULLWS save pSTR rts *-------------------------------------- -* EXP.ADDR = STR ID -* output : str to ZPStrBuf -*-------------------------------------- -CODE.STRGET ldx hStrings - jsr CODE.PUSHBI >PUSHB 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