diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f15efd0a..901ad87c 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 93e73ea9..e97423b1 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -111,7 +111,7 @@ CMD.CD.YA >SYSCALL realpath sec rts -.11 jsr GetPtr1Len +.11 jsr GetPtr1LenY dey lda (ZPPtr1),y @@ -172,7 +172,7 @@ CMD.SET lda (ZPArgVBufPtr) .1 lda (ZPPTR1) beq .8 Ending 0 ? - jsr GetPtr1Len + jsr GetPtr1LenY tya sec @@ -544,7 +544,7 @@ CMD.FUNC lda (ZPArgVBufPtr) jsr CORE.StkGetCtx bcc .9 NO context allowed - lda #3 + lda #3 Check stack for 3 bytes jsr CORE.StkCheck bcs .99 @@ -559,15 +559,16 @@ CMD.FUNC lda (ZPArgVBufPtr) >LDA.G hFuncList >SYSCALL SListNewKey bcs .99 + jsr CORE.StkPushYA - bcs .99 lda #$C0+C.FUNC jsr CORE.StkPush lda #$ff >STA.G bFuncMode - clc + +* clc .99 rts .9 jmp CMD.Exec.CSYN @@ -579,7 +580,7 @@ CMD.. lda (ZPArgVBufPtr) jsr IO.Load bcs CMD.CALL.RTS >LDYA ZPArgVBufPtr - jmp CMD.CALL.YAX exec cmd file and continue + jmp CORE.Load.YAX exec cmd file and continue .9 jmp CMD.Exec.CSYN *-------------------------------------- @@ -594,7 +595,7 @@ CMD.CALL >LDA.G hFuncList >LDA.G hFuncList >SYSCALL SListLookup bcs CMD.CALL.UNDEF - + >STYA ZPTmpW KeyID >PUSHWZ From Start @@ -602,67 +603,22 @@ CMD.CALL >LDA.G hFuncList >PUSHWZ Allocate.. >PUSHW ZPTmpW KeyID >LDA.G hFuncList + >DEBUG >SYSCALL SListGetData + >DEBUG bcs CMD.CALL.RTS >LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2... - -CMD.CALL.YAX stx M32.ACC X=Code to Execute - - jsr CORE.ArgV.Dup Y,A = ArgV - bcs CMD.CALL.RTS - sta M32.ACC+2 A=ARGC - stx M32.ACC+1 X=ARGV - - lda #8 - jsr CORE.StkCheck - bcs CMD.CALL.RTS - - >LDYA ZPInputBuf - jsr CORE.StkPushYA - bcs CMD.CALL.9 - - >LDYA ZPInputBufPtr - jsr CORE.StkPushYA - bcs CMD.CALL.9 - - ldy #S.PS.ARGC - lda (pPS),y - jsr CORE.StkPush old ARGC - - ldy #S.PS.hARGV - lda (pPS),y - jsr CORE.StkPush old ARGV - - ldy #S.PS.ARGC - lda M32.ACC+2 new ARGC - sta (pPS),y - - iny #S.PS.hARGV - lda M32.ACC+1 - sta (pPS),y new ARGV - - lda M32.ACC new code - jsr CORE.StkPush - - lda M32.ACC - >SYSCALL GetMemPtr - >STYA ZPInputBuf - >STYA ZPInputBufPtr - - lda #$C0 - jmp CORE.StkPush - -CMD.CALL.9 rts + jmp CORE.Load.YAX *-------------------------------------- CMD.EXIT lda (ZPArgVBufPtr) beq .1 no arg, exit 0 >LDYA ZPArgVBufPtr jsr EXP.GET - bcs CMD.CALL.9 + bcs .9 >SYSCALL AToL - bcs CMD.CALL.9 + bcs .9 >PULLA inc pStack @@ -790,7 +746,6 @@ CMD.SWITCH jsr CORE.StkGetCtx txa jsr CORE.StkPush Push EXP hVALUE - bcs .9 lda CORE.TestResult beq .1 diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index a8c73207..5e5d915f 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -21,7 +21,55 @@ CORE.FUNCRESET >LDA.G hFuncList >SYSCALL SListFree >STZ.G hFuncList -.8 rts +.8 +CORE.FUNCRESET.RTS + rts +*-------------------------------------- +CORE.Load.YAX stx M32.ACC X=Code to Execute + + jsr CORE.ArgV.Dup Y,A = ArgV + bcs CORE.FUNCRESET.RTS + sta M32.ACC+2 A=ARGC + stx M32.ACC+1 X=ARGV + + lda #8 + jsr CORE.StkCheck + bcs CORE.FUNCRESET.RTS + + >LDYA ZPInputBuf + jsr CORE.StkPushYA + bcs CORE.FUNCRESET.RTS + + >LDYA ZPInputBufPtr + jsr CORE.StkPushYA + bcs CORE.FUNCRESET.RTS + + ldy #S.PS.ARGC + lda (pPS),y + jsr CORE.StkPush old ARGC + + ldy #S.PS.hARGV + lda (pPS),y + jsr CORE.StkPush old ARGV + + ldy #S.PS.ARGC + lda M32.ACC+2 new ARGC + sta (pPS),y + + iny #S.PS.hARGV + lda M32.ACC+1 + sta (pPS),y new ARGV + + lda M32.ACC new code + jsr CORE.StkPush + + lda M32.ACC + >SYSCALL GetMemPtr + >STYA ZPInputBuf + >STYA ZPInputBufPtr + + lda #$C0 + jmp CORE.StkPush *-------------------------------------- * http://heirloom.sourceforge.net/sh/sh.1.html *-------------------------------------- @@ -245,27 +293,27 @@ CORE.ExecExtCmd.Exit *-------------------------------------- CORE.AddFunc >LDYA L.ENDCMD jsr CORE.LookupInputBuf - bcs .8 + bcs .1 -.7 lda #0 - >STA.G bFuncMode + >STZ.G bFuncMode - jsr .8 add "END" + jsr .1 add "END" bcs .9 jmp CMD.END.FUNC Cleanup Stk .9 jmp CORE.Run.SYN -.8 ldy #0 +.1 ldy #$ff -.80 lda (ZPInputBufPtr),y - iny - beq .82 - cmp #C.CR - bne .80 +.2 iny + lda (ZPInputBufPtr),y + beq .3 -.82 lda #0 + eor #C.CR + bne .2 + +.3 >PUSHYA DataLen >PUSHW ZPInputBufPtr DataPtr @@ -278,6 +326,7 @@ CORE.AddFunc >LDYA L.ENDCMD lda (pData),y KeyID >PUSHA >LDA.G hFuncList + >SYSCALL SListAddData bcs .9 *-------------------------------------- @@ -359,15 +408,15 @@ CORE.ArgV.Dup >STYA ZPPtr1 sta ZPPtr2 stz ZPPtr2+1 -.1 lda (ZPPtr1) - beq .4 +.1 jsr GetPtr1LenY + tya + beq .2 - jsr GetPtr1Len - - jsr CORE.ArgV.DupNextY + jsr AddAp1Ptr2 + jsr AddYp1Ptr1 bra .1 -.4 pla +.2 pla ply >STYA ZPPtr1 @@ -380,34 +429,22 @@ CORE.ArgV.Dup >STYA ZPPtr1 lda #$ff Arg count-1 (skip $0) pha -.5 lda (ZPPtr1) - sta (ZPPtr2) - beq .8 - - pla +.5 pla inc pha jsr StrCpyPtr1Ptr2 - - jsr CORE.ArgV.DupNextY - bra .5 + tya + beq .8 -.8 pla Arg count + jsr AddAp1Ptr2 + jsr AddYp1Ptr1 + bra .5 + +.8 pla A = Arg count, X = hARGV clc .9 rts *-------------------------------------- -CORE.ArgV.DupNextY - jsr AddYp1Ptr1 - - tya - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .8 - inc ZPPtr2+1 -.8 rts -*-------------------------------------- CORE.ArgV.Add >LDYA ZPArgVBufPtr >STYA ZPArgVBufPrev Save String start of Expand @@ -624,9 +661,12 @@ CORE.SkipCharsA clc CORE.StkCheck sec adc (pData) StackPtr cmp #CORE.STACK.MAX + bcc .8 lda #E.STKOVERFLOW - rts +* clc + +.8 rts *-------------------------------------- CORE.StkPushYAX phx jsr CORE.StkPushYA diff --git a/BIN/SH.S.HIS.txt b/BIN/SH.S.HIS.txt index b885eade..8558a39f 100644 --- a/BIN/SH.S.HIS.txt +++ b/BIN/SH.S.HIS.txt @@ -31,11 +31,11 @@ HIS.Add >LDA.G HIS.hBuf tya sec add len+1 - >ADC.G CL.Len CmdBuffer length + >ADC.G CL.Len CmdBuffer length pla bcc .2 enough room - jsr GetPtr1Len get len of oldest string + jsr GetPtr1LenY get len of oldest string tya * sec diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 7540b92a..fb3e751f 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -222,7 +222,7 @@ CS.RUN jsr CL.Init lda (pPS),y >SYSCALL GetMemPtr plx - jsr CMD.CALL.YAX + jsr CORE.Load.YAX bra CS.RUN.LOOP *-------------------------------------- .1 jsr CMD.CD.HOME @@ -244,7 +244,7 @@ CS.RUN jsr CL.Init jsr IO.Load bcs CS.RUN.LOOP >LDYA L.HOME.PROFILE - jsr CMD.CALL.YAX exec profile and continue + jsr CORE.Load.YAX exec profile and continue * bcs CS.RUN.LOOP *-------------------------------------- @@ -361,7 +361,7 @@ CS.RUN.INTERACTIVE >SYSCALL GetMemPtr Y,A =ARGV plx - jsr CMD.CALL.YAX X = Copy of CL + jsr CORE.Load.YAX X = Copy of CL .6 jsr CORE.Run @@ -533,7 +533,7 @@ RemoveStrFromArgV >STYA ZPPtr1 >STYA ZPPtr2 - jsr GetPtr1Len + jsr GetPtr1LenY .2 jsr AddYp1Ptr1 @@ -542,11 +542,7 @@ RemoveStrFromArgV tya beq .8 - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .2 - inc ZPPtr2+1 + jsr AddAp1Ptr2 bra .2 .8 rts @@ -559,7 +555,7 @@ IncPtr1 inc ZPPtr1 inc ZPPtr1+1 IncPtr1.8 rts *-------------------------------------- -GetPtr1Len ldy #$ff +GetPtr1LenY ldy #$ff .1 iny lda (ZPPtr1),y @@ -576,6 +572,13 @@ AddAPtr1 clc inc ZPPtr1+1 .8 rts *-------------------------------------- +AddAp1Ptr2 sec + adc ZPPtr2 + sta ZPPtr2 + bcc .8 + inc ZPPtr1+2 +.8 rts +*-------------------------------------- StrCpyPtr1Ptr2 ldy #$ff .1 iny diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index fea06e08..6b75b670 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -188,7 +188,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYAI K.Buf256 get back bin path ldx #SYS.strdup make a copy of this string - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .98 lda BIN.hMem Keep X=new string hMem diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index c2bc9069..797a9329 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -567,7 +567,7 @@ K.ReadDir.ConvertTime lda ZPPtr3+1 adc #0 ldx #SYS.PTime2Time BANK2 - jmp K.SYSCALL2.BANK + jmp K.SYSCALL2 */------------------------------------- * # CloseDir * ## C diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index de6d7e30..37fd7eb7 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -232,7 +232,7 @@ ENV.Search.YA >STYA .4+1 .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .1 Failed...retry next path... lda K.S.STAT+S.STAT.P.TYPE diff --git a/SYS/KERNEL.S.GPX.txt b/SYS/KERNEL.S.GPX.txt index 007e0398..6fcd78d1 100644 --- a/SYS/KERNEL.S.GPX.txt +++ b/SYS/KERNEL.S.GPX.txt @@ -7,12 +7,7 @@ NEW * X = SYSfnc.Index * Y,A = free for Inline param *-------------------------------------- - sta CLRREADAUX - sta CLRWRITEAUX - jsr K.SYSCALL2 - sta SETREADAUX - sta SETWRITEAUX - rts + JMP * *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.GPX diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index b516bb07..1fce0c77 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -432,18 +432,30 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA #$C0 .DA #$80 *-------------------------------------- +* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB +*-------------------------------------- K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK - bpl K.SYSCALL.JMP 0, E000, no BNK change bvc K.SYSCALL2.BANK -K.SYSCALL2.AUX sta SETREADAUX AUX Mem API +K.SYSCALL2.AUX sta SETREADAUX MAIN to AUX Mem API sta SETWRITEAUX jsr K.SYSCALL.JMP sta CLRREADAUX sta CLRWRITEAUX rts - -K.SYSCALL2.BANK sta .7+1 + +K.SYSCALL2.MAIN sta CLRREADAUX Coming from KERNEL in AUX... + sta CLRWRITEAUX + jsr .1 + sta SETREADAUX + sta SETWRITEAUX + rts + +.1 bit K.SYSCALL.BANK,x Get Target LC BNK + +K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change + + sta .7+1 lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2 cmp K.SYSCALL.BANK,x beq .7 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 0675504e..e2d82e90 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -272,7 +272,7 @@ K.FreeMem.ERR phx >LDYAI K.FreeMem.MSG .1 ldx #SYS.printf - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 plx lda #E.INVH >DEBUGOA @@ -415,7 +415,7 @@ Mem.DecRefCnt ldy #S.MEM.REFCNT * X = hMem of Loaded Object in AUX mem *\-------------------------------------- K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .99 sty .81+1 Save File Len @@ -428,7 +428,7 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 .1 >STYA A2L Save LEN temporarly ldx #SYS.NewStkObj - jsr K.SYSCALL2.AUX + jsr K.SYSCALL2 bcs .9 stx .80+1 diff --git a/SYS/KERNEL.S.PIPE.txt b/SYS/KERNEL.S.PIPE.txt index 6ad08baa..175c36a7 100644 --- a/SYS/KERNEL.S.PIPE.txt +++ b/SYS/KERNEL.S.PIPE.txt @@ -36,7 +36,7 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S .DO AUXPIPE=1 ldx #SYS.FreeStkObj - jsr K.SYSCALL2.AUX + jsr K.SYSCALL2 .ELSE jsr K.FreeMem .FIN @@ -275,7 +275,7 @@ IO.PIPE.GET.BUF lda (pFD),y .DO AUXPIPE=1 ldx #SYS.GetStkObjPtr - jsr K.SYSCALL2.AUX + jsr K.SYSCALL2 .ELSE jsr K.GetMemPtr get src buf .FIN diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 81882226..9bbfc48d 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -242,7 +242,7 @@ PS.Load ldy #$ff >PUSHWI K.S.STAT >LDYA PS.ArgV found /, some path specified, no search ldx #SYS.stat - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcc .6 REAL path in K.Buf256 .99 rts @@ -320,7 +320,7 @@ PS.Load.SCRIPT ldx #$ff .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs PS.Load.RTS lda K.S.STAT+S.STAT.P.TYPE @@ -419,7 +419,7 @@ PS.LoadGetHeader >PUSHBI O.RDONLY >LDYAI K.IOBuf ldx #SYS.fopen - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .9 sta .1+1 @@ -427,13 +427,13 @@ PS.LoadGetHeader >PUSHWI K.IOBuf+128 .1 lda #$ff SELF MODIFIED ldx #SYS.fread - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 php pha lda .1+1 ldx #SYS.fclose - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 pla plp .9 rts @@ -630,7 +630,7 @@ K.Kill.2 ldy #S.PS.hSID ldy #S.PS.hStdOut lda (ZPPtr1),y ldx #SYS.fclose - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 .1 lda K.Kill.PID @@ -697,7 +697,7 @@ K.LoadFile clc ror FIO.bTXT ldx #SYS.FOpen - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .9 @@ -707,7 +707,7 @@ K.LoadFile clc >PUSHWI K.S.Stat pla ldx #SYS.FStat - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .11 lda K.S.Stat+S.STAT.SIZE+3 @@ -735,7 +735,7 @@ K.LoadFile clc >PUSHW FIO.MemPtr lda FIO.hFILE ldx #SYS.FRead - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcc .2 pha @@ -746,7 +746,7 @@ K.LoadFile clc .99 pha lda FIO.hFILE ldx #SYS.FClose - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 pla sec .9 rts diff --git a/SYS/KERNEL.S.PWDX.txt b/SYS/KERNEL.S.PWDX.txt index 2b71fb39..a38ae226 100644 --- a/SYS/KERNEL.S.PWDX.txt +++ b/SYS/KERNEL.S.PWDX.txt @@ -247,7 +247,7 @@ PWD.Save lda PWD.bDirty >PUSHBI O.WRONLY+O.CREATE >LDYAI PWD.FILE ldx #SYS.FOpen - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcc .1 pha @@ -264,7 +264,7 @@ PWD.Save lda PWD.bDirty >PUSHYA lda .7+1 ldx #SYS.FWrite - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcc .2 pha @@ -277,7 +277,7 @@ PWD.Save lda PWD.bDirty .7 lda #$ff SELF MODIFIED ldx #SYS.fclose - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 .8 lda #$ff jmp K.freemem SELF MODIFIED diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index c5a1df01..604da225 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -55,7 +55,8 @@ K.SListGetData sta SLIST.hList bne .12 >LDYA SLIST.DataLen - >SYSCALL2 GetMem In MAIN Mem + ldx #SYS.GetMem + jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!! bcs .9 stx .82+1 >STYA ZPSListDataPtr @@ -302,7 +303,7 @@ K.SListNewKey sta SLIST.hList jsr SHARED.PullYA >STYA ZPSListDataPtr - + jsr SLIST.Search bcc .99 @@ -411,7 +412,8 @@ K.SListFree sta .8+1 *-------------------------------------- * PRIVATE *-------------------------------------- -SLIST.Search jsr K.GetMemPtr +SLIST.Search lda SLIST.hList + jsr K.GetMemPtr >STYA ZPSListIBlkPtr lda (ZPSListIBlkPtr) @@ -467,7 +469,8 @@ SLIST.Search jsr K.GetMemPtr sec rts *-------------------------------------- -SLIST.Select jsr K.GetMemPtr +SLIST.Select lda SLIST.hList + jsr K.GetMemPtr >STYA ZPSListIBlkPtr SLIST.Select.I ldy ZPSListKeyID+1 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 709b4d47..16655f21 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -333,7 +333,7 @@ K.MkNod.I ldx #2 >LDYA ZPPtr1 ldx #SYS.StrDup - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .9 txa diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index f6d20027..20ebb711 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1322,7 +1322,7 @@ STDIO.NewHFile sta .4+1 Store hFD .21 >LDYAI K.buf256 ldx #SYS.strdup - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs .9 txa diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 66fce144..c73ed73f 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -151,7 +151,7 @@ STDLIB.realpath.I ror .82+1 ldx #SYS.ExpandStr - jsr K.SYSCALL2.BANK + jsr K.SYSCALL2 bcs K.atoi.RTS >STYA ZPPtr1 @@ -262,7 +262,7 @@ STDLIB.realpath.I bpl .88 >LDYAI K.Buf256 ldx #SYS.StrDup BANK 2 - jmp K.SYSCALL2.BANK + jmp K.SYSCALL2 .88 clc rts