diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e2bb73ca..f5afa5d0 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index fb252271..2d8f16a8 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -1017,7 +1017,7 @@ FOR.EXEC jsr CORE.ArgV.NextChar skip "`" jsr IO.Pipe.Out bcs .9 - >PUSHBI 0 + >PUSHB.G CORE.PSFlags >LDYA ZPArgVBufPtr >SYSCALL execl bcs .9 diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index aea3ddc3..7513001b 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -186,10 +186,6 @@ CORE.Run.7 jsr CORE.GetCharNB jsr IO.Pipe.Out bcs CORE.Run.RTS - >LDA.G CORE.PSFlags - ora #S.PS.F.CLOSEONX - sta (pData),y - jsr CORE.IO.AMP run in background bra CORE.ExecCmd.1 Do not skip | diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index 16e0f816..ee4292d3 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -259,6 +259,9 @@ EXP.TEST.BINARY >LDA.G CORE.Operator .2 lda #%001 010 str1 > str2 bra EXP.TEST.BINARY.END + +EXP.TEST.BINARY.ESYN4 + >POP 4 EXP.TEST.BINARY.ESYN lda #E.ESYN @@ -269,37 +272,24 @@ EXP.TEST.BINARY.NUM >LDYA ZPArgVBufPrev >SYSCALL AToL bcs EXP.TEST.BINARY.ESYN - - >PULLL M32.ACC - + jsr CORE.ArgV.Next - beq EXP.TEST.BINARY.ESYN + beq EXP.TEST.BINARY.ESYN4 >LDYA ZPArgVBufPtr >SYSCALL AToL - bcs EXP.TEST.BINARY.ESYN + bcs EXP.TEST.BINARY.ESYN4 - >PULLL M32.ARG + >FPU SUB32 - ldx #4 + >PULLL M32.ACC - ldy #0 - - sec + lda M32.ACC+3 + bmi .5 ACC < ARG -.1 lda M32.ARG,y - sbc M32.ACC,y - sta M32.ACC,y - iny - dex - bne .1 - - bcc .5 CC if ACC < ARG - - lda M32.ACC - ora M32.ACC+1 ora M32.ACC+2 - ora M32.ACC+3 Z if ACC = ARG + ora M32.ACC+1 + ora M32.ACC bne .4 diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index 86bb45a1..83cd5421 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -69,6 +69,12 @@ IO.Pipe.Out >PUSHWZ mode >LEA.G IO.FIFO >SYSCALL fopen bcs IO.Reset.In.RTS + + pha + >LDA.G CORE.PSFlags + ora #S.PS.F.CLOSEONX + sta (pData),y + pla *-------------------------------------- IO.Set.Out pha jsr IO.Reset.Out diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 97cc2759..0d19c003 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -77,7 +77,6 @@ ZPArgVBufPtr .BS 2 ZPVarNamePtr .BS 2 M32.ACC .BS 4 -M32.ARG .BS 4 M32.TMP .BS 4 ZPPtr1 .BS 2 diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 545df26f..0342b799 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -449,7 +449,7 @@ FPU.FOUT .EQ 54 bne :1 .EM *-------------------------------------- - .MA RET + .MA POP .DO ]1=1 inc pStack .FIN @@ -470,6 +470,10 @@ FPU.FOUT .EQ 54 bne :1 pla .FIN + .EM +*-------------------------------------- + .MA RET + >POP ]1 rts .EM *-------------------------------------- diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index 1a713a9c..e9915f88 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -44,26 +44,23 @@ NEW * ## RETURN VALUE * On stack (float) *\-------------------------------------- -K.Float ldx #4 +K.Float ldy #3 -.1 >PULLB FAC,x Reverse Order - dex - bne .1 +.1 lda (pStack),y + sta FAC,y Reverse Order + dey + bpl .1 + + dec pStack keep 5 bytes on stack stz FAC.SIGN - lda #$A0 - sta FAC Exp=32 + lda #$80+32 + sta FAC Positive + Exp=32 ldx #FPU.LTOF *-------------------------------------- MATH.RomCallPushFAC jsr GP.ROMCALL - - lda pStack - sec - sbc #5 - sta pStack - jmp GP.GETFAC.ON.STACK */-------------------------------------- * # lrintf @@ -77,25 +74,19 @@ MATH.RomCallPushFAC * ## RETURN VALUE * On stack (long) *\-------------------------------------- -K.lrintf ldx #FPU.SETFAC +K.lrintf jsr GP.SetFAC - >LDYA pStack - jsr GP.ROMCALL - - lda pStack - clc - adc #5 - sta pStack + inc pStack keep 4 bytes on stack ldx #FPU.QINT jsr GP.ROMCALL - ldx #0 + ldy #3 -.1 >PUSHB FAC+1,x - inx - cpx #4 - bne .1 +.1 lda FAC+1,y + sta (pStack),y + dey + bpl .1 clc rts @@ -198,9 +189,15 @@ MATH.DIVMOD php .3 bvs MATH.PutARG32 DIV *-------------------------------------- -MATH.PutTMP32 ldy #3 MOD +MATH.PutTMP32 lda #TMP32 MOD + .HS 2C BIT ABS +*-------------------------------------- +MATH.PutARG32 lda #ARG32 + sta .1+1 -.1 lda TMP32,y + ldy #3 + +.1 lda $ff,y SELF MODIFIED sta (pStack),y dey bpl .1 @@ -208,38 +205,20 @@ MATH.PutTMP32 ldy #3 MOD rts *-------------------------------------- MATH.PutNotTMP32 - ldy #0 - ldx #3 - - sec - -.1 lda TMP32,y two's complement of X bytes - eor #$ff - adc #0 - sta (pStack),y - iny - dex - bpl .1 - - rts -*-------------------------------------- -MATH.PutARG32 ldy #3 - -.1 lda ARG32,y - sta (pStack),y - dey - bpl .1 - - rts + lda #TMP32 + .HS 2C BIT ABS *-------------------------------------- MATH.PutNotARG32 + lda #ARG32 + sta .1+1 + ldy #0 ldx #3 sec -.1 lda ARG32,y two's complement of X bytes - eor #$ff +.1 lda $ff,y SELF MODIFIED + eor #$ff two's complement of X bytes adc #0 sta (pStack),y iny diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 98a4e9bb..175bbd07 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -132,6 +132,10 @@ PS.CreateChild ldx #0 jsr Mem.SetOwner Set Ownership + lda PS.Flags + and #S.PS.F.CLOSEONX + sta (PS.NewPSPtr) + lda CORE.LastPSID ldy #S.PS.PID sta (PS.NewPSPtr),y @@ -635,7 +639,7 @@ K.Kill.2 ldy #S.PS.hSID lda (ZPPtr1) bit #S.PS.F.CLOSEONX beq .1 - + ldy #S.PS.hStdOut lda (ZPPtr1),y ldx #SYS.fclose