From eb30794b11e75b7222a27d12418a60077cea6a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 13 Jul 2018 16:38:24 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/CONSOLE.DRV.S.txt | 8 ++--- SBIN/INSDRV.S.txt | 12 ++++---- SBIN/SHELL.S.CL.txt | 26 ++++++++-------- SBIN/SHELL.S.CMD.txt | 52 ++++++++++++++++---------------- SBIN/SHELL.S.CSH.txt | 36 +++++++++++----------- SBIN/SHELL.S.HIS.txt | 10 +++---- SBIN/SHELL.S.IO.txt | 2 +- SBIN/SHELL.S.txt | 2 +- SYS/KERNEL.S.BIN.txt | 6 ++-- SYS/KERNEL.S.DRV.txt | 2 +- SYS/KERNEL.S.INIT.txt | 63 ++++++++++++++++++++------------------- SYS/KERNEL.S.IO.txt | 12 +++++--- SYS/KERNEL.S.STDIO.txt | 33 ++++++++++++-------- 15 files changed, 137 insertions(+), 127 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8bad2064306e348384d43f6fcf8501eb1a4a494c..289e0594d909f6ccff4f053cb2c9b2e1306f035f 100644 GIT binary patch delta 7270 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ⓈxBN=$?HH(!fqniGdAX+X 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index f51bd2084aab578a0d2cefcbe5f0be033d3864e9..58815c17b9839ea0f04b4c40f3b43d3823970000 100644 GIT binary patch delta 37673 zcmb5Xd3aPs_CH*=JGXPwovqVbI{U_!K$8tfScI%35R#At1Vkl-plC=!5)|Cp27(F* z2$~Z2H7?_ZI>d2YaGTL_8TWl1o%uR5;*7I6GdhmH {0=_I~?ygWQl`qr&Fb?Vfq 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 delta 37377 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 L.MSG.DETECT @@ -41,7 +41,7 @@ Dev.Detect >LDYA L.MSG.DETECT >SYSCALL InsDrv bcs .9 - >STYA DEV.NODE+S.FD.DEV.DRVPTR + >STYA NODE+S.FD.DEV.DRVPTR >LDYA L.NODE >SYSCALL MKNOD @@ -54,8 +54,8 @@ NODE .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #0 DEVID + .DA 0 BUSPTR .BS 2 DRVPTR - .DA 0 ROMPTR .AZ "CON" NAME .HS 00000000 *-------------------------------------- @@ -907,7 +907,7 @@ DEVSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ .DA #S.DSTAT.T.CHAR .DA #0 .DA #0 - .DA #91 + .DA KVER *-------------------------------------- DRV.END MAN diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index cd2d9b19..e3fc4733 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 @@ -19,7 +17,7 @@ ZPPTR3 .EQ ZPBIN+4 *-------------------------------------- CS.START cld jmp (.1,x) - .DA #H.BIN.CPU.65C02 + .DA #$61 6502,Level 1 (65c02) .DA #1 .DA 0 .DA CS.END-CS.START Code Length To Relocate @@ -44,14 +42,14 @@ CS.INIT ldy #S.PS.ARGC beq .9 lda #1 get PTR to ARG[1] (Driver name) - >SYSCALL GetArg.A + >SYSCALL GetArg >PUSHYA >LDYA L.MSG.LOAD >SYSCALL printf lda #1 get PTR to ARG[1] (Driver name) - >SYSCALL GetArg.A + >SYSCALL GetArg >SYSCALL LoadDrv YA = PTR to ARG[1...n] bcs .99 diff --git a/SBIN/SHELL.S.CL.txt b/SBIN/SHELL.S.CL.txt index 1c1814d8..f9d0bf93 100644 --- a/SBIN/SHELL.S.CL.txt +++ b/SBIN/SHELL.S.CL.txt @@ -4,8 +4,8 @@ AUTO 4,1 .LIST OFF *-------------------------------------- CL.PrintPrompt >LDYA L.ENV.PS1 - >SYSCALL GetEnv.YA - >SYSCALL ExpandStr.YA + >SYSCALL GetEnv + >SYSCALL ExpandStr phx >SYSCALL printf >LDYA L.MSG.PROMPT @@ -14,7 +14,7 @@ CL.PrintPrompt >LDYA L.ENV.PS1 php pha txa - >SYSCALL FreeMem.A + >SYSCALL FreeMem pla plp rts @@ -61,9 +61,9 @@ CL.CHARIN.CTRL cpx #13 CR bne .10 txa - >SYSCALL PutChar.A + >SYSCALL PutChar lda #10 - >SYSCALL PutChar.A + >SYSCALL PutChar >LDA.G CmdBufPtr tay @@ -125,7 +125,7 @@ CL.Insert >LDA.G CmdBuflen txa sta (ZPCMDBuf),y - >SYSCALL PutChar.A + >SYSCALL PutChar >INC.G CmdBufPtr @@ -163,7 +163,7 @@ CL.BS >LDA.G CmdBufPtr sta (pData),y lda #8 - >SYSCALL PutChar.A + >SYSCALL PutChar .9 rts *-------------------------------------- CL.NAK >LDA.G CmdBufPtr @@ -174,7 +174,7 @@ CL.NAK >LDA.G CmdBufPtr >STA.G CmdBufPtr lda #21 - >SYSCALL PutChar.A + >SYSCALL PutChar .9 rts *-------------------------------------- * Erase char UNDER cursor @@ -194,7 +194,7 @@ CL.DEL >LDA.G CmdBuflen beq CL.PrintEOL.8 lda #8 - >SYSCALL PutChar.A + >SYSCALL PutChar >DEC.G CmdBufPtr @@ -224,13 +224,13 @@ CL.PrintEOL >LDA.G CmdBufPtr pha tay lda (ZPCMDBuf),y - >SYSCALL PutChar.A + >SYSCALL PutChar pla inc bra .1 .2 lda #' ' - >SYSCALL PutChar.A + >SYSCALL PutChar >LDA.G CmdBufPtr @@ -240,13 +240,13 @@ CL.PrintEOL >LDA.G CmdBufPtr pha lda #8 - >SYSCALL PutChar.A + >SYSCALL PutChar pla inc bra .3 .4 lda #8 - >SYSCALL PutChar.A + >SYSCALL PutChar CL.PrintEOL.8 clc rts diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 95368e58..a00d27e4 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF *-------------------------------------- CMD.Init >LDYAI CmdLine.MAX+1 - >SYSCALL GetMem.YA + >SYSCALL GetMem bcs .9 >STYA ZPCMDBuf txa @@ -13,7 +13,7 @@ CMD.Init >LDYAI CmdLine.MAX+1 *-------------------------------------- CMD.Quit >LDA.G hCmdBuf beq .9 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .9 rts *-------------------------------------- * ZPCMDBuf : Remove extra SPACE & comment @@ -76,7 +76,7 @@ Cmd.Exec lda #0 >STA.G CMD.hFullpath >LDYA ZPCMDBuf - >SYSCALL ExpandStr.YA + >SYSCALL ExpandStr >STYA ZPPtr1 Ptr to CMD ARGS txa @@ -135,11 +135,11 @@ Cmd.Exec lda #0 Cmd.Exec.Done php pha >LDA.G CMD.hCmdLine - >SYSCALL FreeMem.A + >SYSCALL FreeMem >LDA.G CMD.hFullpath beq .1 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .1 pla plp @@ -160,7 +160,7 @@ Cmd.Exec.EXT jsr Cmd.Exec.Split bra .4 .1 >LDYA L.ENV.PATH push ENVNAME=PATH for search - >SYSCALL GetEnv.YA get value for ENV=PATH + >SYSCALL GetEnv get value for ENV=PATH bcs .2 No PATH, try in CD jsr Cmd.Exec.EXT.Search @@ -168,13 +168,13 @@ Cmd.Exec.EXT jsr Cmd.Exec.Split .2 ldy #S.PS.hPREFIX not found, try in CD lda (pPs),y - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr jsr Cmd.Exec.EXT.Search bcs .99 .3 >LDYA ZPCMDBuf -.4 >SYSCALL NewStr.YA +.4 >SYSCALL NewStr bcs .99 txa >STA.G CMD.hFullpath @@ -202,7 +202,7 @@ Cmd.Exec.EXT jsr Cmd.Exec.Split Cmd.Exec.EXT.TXT lda #0 Get arg[0] = /PATH/SHELL - >SYSCALL GetArg.A + >SYSCALL GetArg >PUSHYA >PUSHW ZPCMDBuf >SYSCALL StrCat @@ -213,7 +213,7 @@ Cmd.Exec.EXT.TXT *-------------------------------------- Cmd.Exec.EXT.BIN >LDA.G CMD.hFullpath - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >PUSHYA >PUSHW ZPCMDBuf >SYSCALL StrCat @@ -232,10 +232,10 @@ Cmd.Exec.EXT.BIN >LDYA ZPCMDBuf bcs .2 startproc - >SYSCALL ExecPSNewEnv.YA + >SYSCALL ExecPSNewEnv jmp Cmd.Exec.Done -.2 >SYSCALL CreatePSNewEnv.YA +.2 >SYSCALL CreatePSNewEnv jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.EXT.Search @@ -263,7 +263,7 @@ Cmd.Exec.EXT.SEP *-------------------------------------- Cmd.Exec.PWD ldy #S.PS.hPREFIX lda (pPs),y - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >SYSCALL printf jmp Cmd.Exec.ECHO.CR *-------------------------------------- @@ -271,10 +271,10 @@ Cmd.Exec.CD lda (ZPPTR2) bne .1 >LDYA L.ENV.HOME - >SYSCALL GetEnv.YA + >SYSCALL GetEnv bcs Cmd.Exec.PWD - >SYSCALL ExpandStr.YA + >SYSCALL ExpandStr bcs .9 bra .4 @@ -296,7 +296,7 @@ Cmd.Exec.CD lda (ZPPTR2) sta (ZPPTR2),y .3 >LDYA ZPPTR2 Get ARG - >SYSCALL RealPath.YA + >SYSCALL RealPath bcs .9 .4 >STYA ZPPTR2 @@ -318,13 +318,13 @@ Cmd.Exec.CD lda (ZPPTR2) bne Cmd.Exec.ERRSYN .8 >LDYA ZPPTR2 - >SYSCALL NewStr.YA + >SYSCALL NewStr bcs .9 phx ldy #S.PS.hPREFIX lda (pPs),y - >SYSCALL FreeMem.A + >SYSCALL FreeMem pla @@ -356,7 +356,7 @@ Cmd.Exec.SET lda (ZPPTR2) ldy #S.PS.hENV lda (pPs),y - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPPTR1 .1 lda (ZPPTR1) @@ -420,19 +420,19 @@ Cmd.Exec.SETVAR ldy #0 beq .2 "VAR=" go UnsetEnv >LDYA ZPPTR2 String is VAR=VALUE... - >SYSCALL PutEnv.YA + >SYSCALL PutEnv jmp Cmd.Exec.Done .2 dey String is "VAR=", Remove endig '=' sta (ZPPTR2),y >LDYA ZPPTR2 String is "VAR"... - >SYSCALL UnsetEnv.YA + >SYSCALL UnsetEnv jmp Cmd.Exec.Done * Print requested VAR .3 >LDYA ZPPTR2 - >SYSCALL GetEnv.YA + >SYSCALL GetEnv bcs .8 >PUSHYA push value @@ -450,7 +450,7 @@ Cmd.Exec.DATE sec Cmd.Exec.TIME clc php >LEA.G CMD.Time - >SYSCALL Time.YA + >SYSCALL Time >PUSHW ZPCMDBuf plp @@ -475,11 +475,11 @@ Cmd.Exec.ECHO lda (ZPPtr2) Cmd.Exec.ECHO.CR lda #13 - >SYSCALL PutChar.A + >SYSCALL PutChar bcs Cmd.Exec.ECHO.END lda #10 - >SYSCALL PutChar.A + >SYSCALL PutChar Cmd.Exec.ECHO.END jmp Cmd.Exec.Done *-------------------------------------- @@ -539,7 +539,7 @@ Cmd.Exec.READ lda (ZPPtr2) beq .1 phy - >SYSCALL PutChar.A + >SYSCALL PutChar ply bcs .99 bra .3 diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index f91d30f6..1c6c22d9 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -31,37 +31,37 @@ CSH.Init lda #$0 >STA.G CSH.StackPtr lda #1 - >SYSCALL GetArg.A - >SYSCALL LoadTxtFile.YA + >SYSCALL GetArg + >SYSCALL LoadTxtFile bcs .9 txa >STA.G CSH.hBuf - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPCSHBufPtr >LDYAI 256 - >SYSCALL GetMem0.YA + >SYSCALL GetMem0 bcs .9 txa >STA.G CSH.hSymbols - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPCSHSymbols >LDYAI 256 - >SYSCALL GetMem.YA + >SYSCALL GetMem bcs .9 txa >STA.G CSH.hData - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPCSHData >LDYAI 256 - >SYSCALL GetMem.YA + >SYSCALL GetMem bcs .9 txa >STA.G CSH.hStack - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPCSHStack * clc @@ -179,19 +179,19 @@ CSH.Run jsr CL.RESET *-------------------------------------- CSH.Quit >LDA.G CSH.hBuf beq .1 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .1 >LDA.G CSH.hStack beq .2 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .2 >LDA.G CSH.hData beq .3 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .3 >LDA.G CSH.hSymbols beq .8 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .8 rts *-------------------------------------- @@ -1138,7 +1138,7 @@ CSH.IsDigit10 cmp #'0' rts *-------------------------------------- CSH.ErrorMsg >LDA.G CSH.hBuf - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPPtr1 lda #0 @@ -1174,14 +1174,14 @@ CSH.ErrorMsg >LDA.G CSH.hBuf cmp #$0D beq .6 phy - >SYSCALL PutChar.A + >SYSCALL PutChar ply bra .5 .6 lda #$0D - >SYSCALL PutChar.A + >SYSCALL PutChar lda #$0A - >SYSCALL PutChar.A + >SYSCALL PutChar @@ -1193,7 +1193,7 @@ CSH.ErrorMsg >LDA.G CSH.hBuf .7 phy lda #'-' - >SYSCALL PutChar.A + >SYSCALL PutChar ply dey bne .7 diff --git a/SBIN/SHELL.S.HIS.txt b/SBIN/SHELL.S.HIS.txt index ef12ebfc..fcdbf3fe 100644 --- a/SBIN/SHELL.S.HIS.txt +++ b/SBIN/SHELL.S.HIS.txt @@ -4,7 +4,7 @@ AUTO 4,1 .LIST OFF *-------------------------------------- HIS.Init >LDYAI History.MAX Get a buffer for History - >SYSCALL GetMem0.YA + >SYSCALL GetMem0 bcs .9 txa @@ -18,7 +18,7 @@ HIS.Init >LDYAI History.MAX Get a buffer for History HIS.Add >LDA.G HIS.hBuf beq .9 - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPPTR1 .10 lda #$ff @@ -86,7 +86,7 @@ HIS.Add >LDA.G HIS.hBuf HIS.GetPrev >LDA.G HIS.hBuf beq HISTORY.RTS - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPPTR1 >LDA.G HIS.Count @@ -107,7 +107,7 @@ History.RTS rts HIS.GetNext >LDA.G HIS.hBuf beq HISTORY.RTS - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >STYA ZPPTR1 >LDA.G HIS.Count @@ -176,7 +176,7 @@ HIS.GetA ldy #0 *-------------------------------------- HIS.Quit >LDA.G HIS.hBuf beq .9 - >SYSCALL FreeMem.A + >SYSCALL FreeMem .9 rts *-------------------------------------- MAN diff --git a/SBIN/SHELL.S.IO.txt b/SBIN/SHELL.S.IO.txt index be32de29..6449ebd6 100644 --- a/SBIN/SHELL.S.IO.txt +++ b/SBIN/SHELL.S.IO.txt @@ -25,7 +25,7 @@ IO.PrintErrMsg pha Save EC for PrintF .3 dey bmi .8 - + lda (ZPPTR1) sec adc ZPPTR1 diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index fc9c5888..b56f415a 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -324,7 +324,7 @@ CheckSleep ldy #Sleep+3 *-------------------------------------- SetPWD ldy #S.PS.hPREFIX lda (pPs),y - >SYSCALL GetMemPtr.A + >SYSCALL GetMemPtr >PUSHYA >PUSHW L.ENV.PWD >SYSCALL SetEnv diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 54c14dc2..6983efb9 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -218,7 +218,7 @@ BIN.Load.1 >PUSHWI K.S.STAT tya * clc CC from bcs .99 - adc BIN.R.CS.Start Get AUXTYPE for actual Base Address + adc BIN.R.CS.Start Get AUXTYPE for actual Base Address sta BIN.R.End compute Range End=AUXTYPE+FILELEN pla adc BIN.R.CS.Start+1 @@ -241,11 +241,11 @@ BIN.Load.1 >PUSHWI K.S.STAT lda (ZPPtr1),y clc adc ZPPtr1 - sta ZPPtr2 Make ZPPtr2 = ZPPtr1 + CodeLen + sta BIN.R.CS.End ZPPtr1 + CodeLen iny lda (ZPPtr1),y adc ZPPtr1+1 - sta ZPPtr2+1 + sta BIN.R.CS.End+1 jsr BIN.RelExe diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 59f74d85..932cfe39 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -303,7 +303,7 @@ DRV.SYS.WRITE ldy #S.IOCTL.BUFPTR clc rts -.3 lda (ZPDRV) +.3 lda (ZPDRV+4) inc ZPDRV+4 bne .4 inc ZPDRV+5 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 149112bd..b1fe1173 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -113,13 +113,11 @@ Kernel.Init3 sta SETALTZP jsr PS0.Init - >DEBUG >LDYAI MSG.Init3 >SYSCALL printf - >DEBUG - - jsr CPU.Init + jsr CPU.Init.6502 + jsr CPU.Init.Z80 jsr DevMgrInit jsr IrqMgrInit @@ -294,15 +292,17 @@ PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel) clc .9 rts *-------------------------------------- -CPU.Init >LDYAI MSG.CPU +CPU.Init.6502 >LDYAI MSG.CPU >SYSCALL printf jsr Detect6502 A = CPU type sta A2osX.CPUTYPE - ldx MSG.CPUTYPEL,y - lda MSG.CPUTYPEH,y - tay + and #$F + asl + tax + ldy MSG.CPUTYPE,x + lda MSG.CPUTYPE+1,x >SYSCALL printf @@ -368,19 +368,20 @@ CPU.Init >LDYAI MSG.CPU .8 lda A2osX.RANDOM16 sta A2osX.CPUSPEED+1 - pha push CPU speed LO + >PUSHA push CPU speed LO lda A2osX.CPUSPEED - pha push CPU speed HI + >PUSHA push CPU speed HI >LDYAI MSG.CPU.SPEEDOK >SYSCALL printf - + rts +*-------------------------------------- CPU.Init.Z80 >LDYAI MSG.Z80 >SYSCALL printf jsr DetectZ80 bcs .9 sta A2osX.Z80SLOT - pha Push Z80Slot + >PUSHA tax lda #A2osX.S.Z80 @@ -855,6 +856,10 @@ DevMgrInit.AddBDev ora #$30 sta FD.BDEV+S.FD.DEV.NAME+3 SxDn + >PUSHWI FD.BDEV+S.FD.DEV.NAME + >LDYAI MSG.BLKDEV + >SYSCALL printf + >LDYAI FD.BDEV DevMgrInit.AddCDev @@ -884,7 +889,6 @@ DevMgrInit.AddCDev bpl .1 inc DevMgr.DevCnt - clc rts *-------------------------------------- EvtMgrInit >LDYAI MSG.EVT @@ -997,10 +1001,14 @@ TClock.SIG .HS 0878282c58ff700538b00118b8087848 SYSSCREEN.TOP .AZ "A2osX System Screen" MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n" MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n" +MSG.KCREAD .AZ "Reading Kernel Config File..." +MSG.KCREAD.OK .AZ "OK\n" +MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" *-------------------------------------- MSG.Init3 .AZ "A2osX[Stage3]:Init\r\n" MSG.DEV .AZ "-Device Manager...\r\n" +MSG.BLKDEV .AZ " /DEV/%s\r\n" MSG.IRQ .AZ "-Interrupt Manager..." MSG.IRQ.VBL .AZ "Mouse VBL IRQ Activated.\r\n" MSG.IRQ.CLOCK .AZ "Clock Card IRQ Activated.\r\n" @@ -1015,25 +1023,18 @@ MSG.Init3.OK .AZ "A2osX[Stage3]:Complete.\r\n" *-------------------------------------- MSG.CPU .AZ "Checking CPU..." MSG.CPU.SPEED .AZ "Detecting CPU Speed..." -MSG.CPUTYPEL .DA #MSG.6502 - .DA #MSG.65C02 - .DA #MSG.65R02 - .DA #MSG.65816 -MSG.CPUTYPEH .DA /MSG.6502 - .DA /MSG.65C02 - .DA /MSG.65R02 - .DA /MSG.65816 -MSG.6502 .AZ "6502.\n" -MSG.65C02 .AZ "65C02.\n" -MSG.65R02 .AZ "65R02.\n" -MSG.65816 .AZ "65816.\n" -MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\n" +MSG.CPUTYPE .DA MSG.6502 + .DA MSG.65C02 + .DA MSG.65R02 + .DA MSG.65816 +MSG.6502 .AZ "6502.\r\n" +MSG.65C02 .AZ "65C02.\r\n" +MSG.65R02 .AZ "65R02.\r\n" +MSG.65816 .AZ "65816.\r\n" +MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\r\n" MSG.Z80 .AZ "Detecting Z80 CPU..." -MSG.Z80.OK .AZ "Detected In Slot %d.\n" -MSG.Z80.KO .AZ "Not Detected.\n" -MSG.KCREAD .AZ "Reading Kernel Config File..." -MSG.KCREAD.OK .AZ "OK\n" -MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" +MSG.Z80.OK .AZ "Detected In Slot %d.\r\n" +MSG.Z80.KO .AZ "Not Detected.\r\n" *-------------------------------------- DEV.SYS .AZ "/DEV/SYS" I.ENV.A2osX .AZ "A2OSX" diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 30fceecc..dab148d3 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -94,10 +94,13 @@ K.Read *-------------------------------------- * int write(int fd, const void *buf, size_t count); *-------------------------------------- -K.Write jsr K.GetMemPtr - >STYA pFD +K.Write jsr IO.SELECT + bcs K.Write.9 - lda (pFD) #S.FD.T + >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + >PULLW K.S.IOCTL+S.IOCTL.BYTECNT + +K.Write.I lda (pFD) #S.FD.T tax jmp (.1,x) @@ -109,6 +112,7 @@ K.Write jsr K.GetMemPtr .DA STDIO.IOERR DSOCK .DA IO.WRITE.SSOCK .DA IO.WRITE.FIFO +K.Write.9 >RET 4 *-------------------------------------- IO.WRITE.REG >PUSHW K.S.IOCTL+S.IOCTL.BUFPTR >PUSHW K.S.IOCTL+S.IOCTL.BYTECNT @@ -124,7 +128,7 @@ IO.WRITE.CDEV ldy #S.FD.DEV.DRVPTR lda (pFD),y sta .1+2 - lda K.IOBuf + >LDYAI K.S.IOCTL ldx #IOCTL.WRITE .1 jmp $ffff *-------------------------------------- diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 770f5aff..01582ed9 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -175,11 +175,15 @@ K.PrintF >STYA ZPPtr1 format K.PrintF.0 >LDYAI K.IOBuf >STYA pIOBuf + >STYA K.S.IOCTL+S.IOCTL.BUFPTR -K.PrintF.1 ldy #0 - +K.PrintF.1 stz K.S.IOCTL+S.IOCTL.BYTECNT + stz K.S.IOCTL+S.IOCTL.BYTECNT+1 + + ldy #0 + .1 lda (ZPPtr1),y - beq .99 + beq .8 end of format.. iny cmp #'%' bne .10 @@ -194,7 +198,7 @@ K.PrintF.1 ldy #0 iny .3 cmp PrintFTBL1,x do we have a %x command? - beq .8 yes, jmp to it! + beq .6 yes, jmp to it! dex bpl .3 no valid letter... @@ -225,7 +229,7 @@ K.PrintF.1 ldy #0 sta K.PrintF.PadL bra .2 go get next char... -.8 phy +.6 phy txa asl tax @@ -233,6 +237,8 @@ K.PrintF.1 ldy #0 ply bcc .1 rts + +.8 jmp PrintF.Flush .10 cmp #'\' bne .20 @@ -542,9 +548,9 @@ PrintF.SS ldy #$00 PSTR *-------------------------------------- PrintF.COut phy - ldy S.IOCTL.BYTECNT + ldy K.S.IOCTL+S.IOCTL.BYTECNT sta (pIOBuf),y - inc S.IOCTL.BYTECNT + inc K.S.IOCTL+S.IOCTL.BYTECNT bne .8 lda pIOBuf+1 @@ -553,23 +559,25 @@ PrintF.COut phy * we are printing to IObuf, flush! - lda S.IOCTL.BYTECNT+1 + lda K.S.IOCTL+S.IOCTL.BYTECNT+1 pha lda #1 Flush $100 bytes - sta S.IOCTL.BYTECNT+1 + sta K.S.IOCTL+S.IOCTL.BYTECNT+1 pla inc - sta S.IOCTL.BYTECNT+1 + sta K.S.IOCTL+S.IOCTL.BYTECNT+1 .7 inc pIOBuf+1 - inc S.IOCTL.BYTECNT+1 + inc K.S.IOCTL+S.IOCTL.BYTECNT+1 .8 ply clc rts +*-------------------------------------- +PrintF.Flush jmp K.Write.I */-------------------------------------- * # GetChar * Get char from StdIn @@ -593,8 +601,7 @@ K.GetChar ldy #S.PS.hStdIn * CC = success * A = char *\-------------------------------------- -K.GetC jsr K.GetMemPtr - >STYA pFD +K.GetC jsr IO.SELECT ldy #S.FD.T lda (pFD),y