From 728278c1968944193b2e6adeb7f73f19ea78fb18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 4 Oct 2016 18:01:07 +0200 Subject: [PATCH] Kernel version 0.8 : Fixed a bug in DRV relocation --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/CONSOLE.DRV.S.txt | 4 +- INC/A2osX.I.txt | 4 +- SYS/KERNEL.S.BIN.txt | 186 +++++++++++++++++++---------------------- SYS/KERNEL.S.DAT.txt | 14 ++++ SYS/KERNEL.S.DRV.txt | 4 +- SYS/KERNEL.S.FIO.txt | 7 +- SYS/KERNEL.S.INIT3.txt | 3 + SYS/KERNEL.S.LIB.txt | 1 - SYS/KERNEL.S.txt | 1 + 11 files changed, 111 insertions(+), 113 deletions(-) create mode 100644 SYS/KERNEL.S.DAT.txt diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index 8f6140df8bdab0929dfc6359fc543eb2a2b2a3fa..c36b4ceb4f657cd611bb968faacbd162f72e668d 100644 GIT binary patch delta 5558 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 nTPtK_2-(H+If7 diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 5c1159fa29beab19c2c8d6af1a6f540ab77057f2..d3fcbe58a13e25c32520507305fbb3067e761c0f 100644 GIT binary patch delta 20439 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 delta 19936 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 - - >LDYA L.MSG.DETECT +Dev.Detect >LDYA L.MSG.DETECT >SYSCALL SYS.PStrOutYA clc diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 1fffbadb..b9e83270 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -134,7 +134,7 @@ H.BIN.CODE.LEN .EQ 8 H.BIN.EXE.DS.SIZE .EQ 10 H.BIN.EXE.REL.TABLE .EQ 16 * -H.BIN.DRV.DEVCTRLBLK.O .EQ 10 +H.BIN.DRV.HEADER.O .EQ 10 H.BIN.DRV.CODE.O .EQ 12 H.BIN.DRV.CODE.LEN .EQ 14 H.BIN.DRV.REL.TABLE .EQ 0 @@ -266,7 +266,7 @@ TSKMGR.ERRNSP .EQ $DD No Such Process Error *-------------------------------------- SYSMGR.ERRSYN .EQ $CF Syntax Error SYSMGR.ERRENVF .EQ $CE Env is Full - +SYSMGR.ERRIBIN .EQ $CD Invalid BIN format SYSMGR.ERRFTB .EQ $CC File Too Big Error SYSMGR.ERRFNF .EQ $CB File Not Found Error *-------------------------------------- diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 0f787de2..3d8ac6f0 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -71,6 +71,7 @@ K.LoadEXEYA.1 >PUSHWI KrnBuf256 jsr BIN.SetupCodeEndPtr2 jsr BIN.RelocateEXE + bcs .98 >LDYA K.LoadEXEYA.Filename get back bin path >SYSCALL SYS.NewPStrYA make a copy of this string @@ -106,13 +107,28 @@ K.LoadEXEYA.Filename .BS 2 K.LoadEXEYA.hMem .BS 1 *-------------------------------------- * BIN.InstallDRV -* pDrv = .DRV File Loaded Address +* In: +* pDrv = .DRV File Loaded Address +* Note: +* K.LoadEXEYA called from K.LoadDrvYA +* Already setup correctly pDrv, +* BIN.Relocate.Start,End *-------------------------------------- -BIN.InstallDRV ldy #H.BIN.DRV.CODE.O +BIN.InstallDRV lda DevMgr.Free Offset = Target DRV address-AUXTYPE + sec + sbc BIN.Relocate.Start + sta BIN.Relocate.Offset + + lda DevMgr.Free+1 + sbc BIN.Relocate.Start+1 + sta BIN.Relocate.Offset+1 + + ldy #H.BIN.DRV.CODE.O lda (pDrv),y clc adc BIN.Relocate.Start Advance start From Bin code to DRV code sta BIN.Relocate.Start + iny lda (pDrv),y adc BIN.Relocate.Start+1 @@ -133,127 +149,71 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O sta BIN.InstallDRV.DRVEnd tay Save DRVEnd LO lda DevMgr.Free+1 - sta ZPQuickPtr3+1 save it for DrvMove adc BIN.InstallDRV.DRVLen+1 A = DRVEnd HI sta BIN.InstallDRV.DRVEnd+1 - bcs .98 we crossed $FFFF, out of mem + bcs .9 we crossed $FFFF, out of mem cpy #DevMgr.HiMem sbc /DevMgr.HiMem - bcs .98 No More Room to load Driver.... + bcs .9 No More Room to load Driver.... lda DevMgr.LastDevID inc cmp #K.DEV.MAX - beq .99 No Device Handle Left + bne .10 No Device Handle Left - sta DevMgr.LastDevID - - ldy #H.BIN.DRV.DEVCTRLBLK.O - lda (pDrv),y - clc - adc pDrv - sta ZPQuickPtr1 - iny - lda (pDrv),y - adc pDrv+1 - sta ZPQuickPtr1+1 - - ldy #S.DEV.JMP - - lda DevMgr.Free + lda #DEVMGR.ERROOH sec - sbc (ZPQuickPtr1),y - sta BIN.Relocate.Offset - lda DevMgr.Free+1 - iny - sbc (ZPQuickPtr1),y - sta BIN.Relocate.Offset+1 - - ldy #H.BIN.DRV.CODE.O - lda (pDrv),y - clc - adc pDrv - sta ZPQuickPtr1 - - iny - lda (pDrv),y - adc pDrv+1 - sta ZPQuickPtr1+1 - - ldy #H.BIN.DRV.CODE.LEN - jsr BIN.SetupCodeEndPtr2 - - jsr BIN.RelocateDRV - - jsr BIN.MoveDRV - - >LDYA BIN.InstallDRV.DrvEnd - >STYA DevMgr.Free - clc - rts - -.98 lda #DEVMGR.ERROOM + rts + +.9 lda #DEVMGR.ERROOM sec rts -.99 lda #DEVMGR.ERROOH - sec - rts -*-------------------------------------- -BIN.MoveDRV ldy #H.BIN.DRV.DEVCTRLBLK.O - lda (pDrv),y - clc - adc pDrv - sta ZPQuickPtr1 - iny - lda (pDrv),y - adc pDrv+1 - sta ZPQuickPtr1+1 - - ldy #S.DEV.JMP Relocate Main JMP - lda (ZPQuickPtr1),y - clc - adc BIN.Relocate.Offset - sta (ZPQuickPtr1),y - iny - lda (ZPQuickPtr1),y - adc BIN.Relocate.Offset+1 - sta (ZPQuickPtr1),y +.10 sta DevMgr.LastDevID - lda DevMgr.LastDevID jsr K.GetDevByIDA - >STYA pDev + >STYA ZPQuickPtr2 setup Ptr2 to dest HEADER - ldy #S.DEV Make sure DevMgr.Table Ends with 0 - lda #0 - sta (pDev),y + ldy #H.BIN.DRV.HEADER.O + lda (pDrv),y + clc + adc pDrv + sta ZPQuickPtr1 + iny + lda (pDrv),y + adc pDrv+1 + sta ZPQuickPtr1+1 set Ptr1 to Src HEADER + + ldy #S.DEV-1 - dey - -.1 lda (ZPQuickPtr1),y Copy DRV.Header - sta (pDev),y +.1 lda (ZPQuickPtr1),y copy header to DevMgr.Table + sta (ZPQuickPtr2),y dey bpl .1 + + ldy #S.DEV.JMP Setup Main JMP + lda DevMgr.Free + sta (ZPQuickPtr2),y + tax + iny + lda DevMgr.Free+1 + sta (ZPQuickPtr2),y - lda DevMgr.LastDevID Save Dev.ID in the driver for SELECT - ldy #S.DEV.ID - sta (pDev),y + stx ZPQuickPtr2 set Ptr2 to Dest CODE + sta ZPQuickPtr2+1 - ldy #H.BIN.DRV.CODE.O + ldy #H.BIN.DRV.CODE.O lda (pDrv),y clc adc pDrv sta ZPQuickPtr1 - iny + iny lda (pDrv),y adc pDrv+1 - sta ZPQuickPtr1+1 Make ZPQuickPtr1=DRV.CODE - - >LDYA DevMgr.Free - >STYA ZPQuickPtr2 Make ZPQuickPtr1=Dest location in LC - + sta ZPQuickPtr1+1 set Ptr1 to Src CODE + lda BIN.InstallDRV.DrvLen+1 eor #$ff pha @@ -263,11 +223,11 @@ BIN.MoveDRV ldy #H.BIN.DRV.DEVCTRLBLK.O ldy #0 -.2 inx +.2 inx Move CODE in LC bne .3 pla - dec - beq .8 + inc + beq .4 pha .3 lda (ZPQuickPtr1),y @@ -276,9 +236,27 @@ BIN.MoveDRV ldy #H.BIN.DRV.DEVCTRLBLK.O bne .2 inc ZPQuickPtr1+1 inc ZPQuickPtr2+1 - bra .2 + bra .2 + +.4 ldy #H.BIN.DRV.CODE.LEN + lda DevMgr.Free Make Ptr1 = code start + sta ZPQuickPtr1 + clc + adc (pDrv),y + sta ZPQuickPtr2 -.8 rts + iny + lda DevMgr.Free+1 + sta ZPQuickPtr1+1 + adc (pDrv),y + sta ZPQuickPtr2+1 Make ZPQuickPtr2 = ZPQuickPtr1 + CodeLen + + jsr BIN.RelocateDRV + + >LDYA BIN.InstallDRV.DrvEnd + >STYA DevMgr.Free + clc + rts *-------------------------------------- BIN.InstallDRV.DrvLen .BS 2 BIN.InstallDRV.DrvEnd .BS 2 @@ -306,9 +284,15 @@ BIN.Relocate.Offset .BS 2 BIN.RelocateEXE ldy #H.BIN.HEADER+1 lda (ZPQuickPtr1),y cmp /H.BIN.HEADER.BIN65 - bne * + beq .1 + cmp /H.BIN.HEADER.DRV65 + beq .1 - ldy #H.BIN.JMP relocate Main JMP + lda #SYSMGR.ERRIBIN + sec + rts + +.1 ldy #H.BIN.JMP relocate Main JMP lda (ZPQuickPtr1),y clc adc BIN.Relocate.Offset diff --git a/SYS/KERNEL.S.DAT.txt b/SYS/KERNEL.S.DAT.txt new file mode 100644 index 00000000..18c4df5d --- /dev/null +++ b/SYS/KERNEL.S.DAT.txt @@ -0,0 +1,14 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF +*-------------------------------------- +ENV.DRV >PSTRING "DRV" +ENV.LIB >PSTRING "LIB" +*-------------------------------------- +MAN +SAVE SYS/KERNEL.S.DAT +LOAD SYS/KERNEL.S +ASM diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 95264b2b..1e8ed735 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -42,10 +42,11 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray inc ZPQuickPtr1+1 .1 >LDYA ZPQuickPtr1 + jsr pDrvJmp call Dev.Detect bcs .97 - + jsr BIN.InstallDRV bcs .97 @@ -73,7 +74,6 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray sec rts *-------------------------------------- -ENV.DRV >PSTRING "DRV" K.LoadDrv.CmdArray .BS 2 K.LoadDrv.hFullName .BS 1 K.LoadDrv.hMem .BS 1 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 51b7d95a..360e883a 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -13,8 +13,7 @@ AUTO 6 * Y,A = PSTR to FilePath (PSTRING) * X = hMem to FilePath *-------------------------------------- -K.FileSearch >DEBUG - >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA +K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA >PULLYA Get Search list >SYSCALL SYS.ExpandPStrYA Expand it (SYSCALL to BNK1) bcs .99 @@ -66,13 +65,13 @@ K.FileSearch >DEBUG jsr K.FreeMemA >LDYAI KrnBuf256 >SYSCALL SYS.NewPStrYA - rts +.99 rts .98 lda K.FileSearch.hSrch Discard Expanded hSrch list jsr K.FreeMemA lda #SYSMGR.ERRFNF sec -.99 rts + rts *-------------------------------------- K.FileSearch.hSrch .BS 1 K.FileSearch.Index .BS 1 diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index fa4eced7..8846ab1c 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -16,6 +16,9 @@ Kernel.Init3 jsr K.DevMgrInit ldx #DEVMGR.SELECT jsr pDevJmp + + lda #2 + sta A2osX.ASCREEN >LDYAI MSG.Init3 >SYSCALL SYS.PStrOutYA diff --git a/SYS/KERNEL.S.LIB.txt b/SYS/KERNEL.S.LIB.txt index fcf9fb81..fd65740b 100644 --- a/SYS/KERNEL.S.LIB.txt +++ b/SYS/KERNEL.S.LIB.txt @@ -89,7 +89,6 @@ K.UnloadLibA pha pla jmp K.FreeMemA *-------------------------------------- -ENV.LIB >PSTRING "LIB" MAN SAVE SYS/KERNEL.S.LIB LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index aa0f774b..073faa1d 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -94,6 +94,7 @@ A2osX.D002.END .EQ * A2osX.E000 .EQ * .PH $E000 .INB SYS/KERNEL.S.JMP + .INB SYS/KERNEL.S.DAT .INB SYS/KERNEL.S.IRQ .INB SYS/KERNEL.S.MEM *--------------------------------------