Kernel version 0.8 : Fixed bug in LOADBIN called from BNK1

This commit is contained in:
Rémy GIBERT 2016-09-30 08:24:52 +02:00
parent c04a398bf8
commit 4219fe9e0d
8 changed files with 24 additions and 23 deletions

Binary file not shown.

Binary file not shown.

View File

@ -190,7 +190,7 @@ SYS.SaveFile .EQ $46
SYS.LoadDrvYA .EQ $50 SYS.LoadDrvYA .EQ $50
SYS.LoadLibYA .EQ $52 SYS.LoadLibYA .EQ $52
SYS.UnloadLibA .EQ $54 SYS.UnloadLibA .EQ $54
* .EQ $56 SYS.LoadExeYA .EQ $56
SYS.TimeYA .EQ $58 SYS.TimeYA .EQ $58
SYS.CTime2Time .EQ $5A SYS.CTime2Time .EQ $5A

View File

@ -12,10 +12,10 @@ AUTO 6
* Y,A = MEMPTR * Y,A = MEMPTR
* X = hMem of Code Segment * X = hMem of Code Segment
*-------------------------------------- *--------------------------------------
BIN.LoadEXEYA >STYA BIN.LoadExe.Filename K.LoadEXEYA >STYA K.LoadEXEYA.Filename
jsr K.PStrUprYA Y,A unmodified >SYSCALL SYS.PStrUprYA Y,A unmodified
jsr K.GetMemByNameYA jsr K.GetMemByNameYA
bcs BIN.LoadEXEYA.1 not already loaded bcs K.LoadEXEYA.1 not already loaded
>STYA ZPQuickPtr1 Save base address >STYA ZPQuickPtr1 Save base address
ldy #S.MEM.REFCNT ldy #S.MEM.REFCNT
@ -26,8 +26,8 @@ BIN.LoadEXEYA >STYA BIN.LoadExe.Filename
txa txa
jmp K.GetMemPtrA X=hMem from K.GetMemByNameA jmp K.GetMemPtrA X=hMem from K.GetMemByNameA
*-------------------------------------- *--------------------------------------
BIN.LoadEXEYA.1 >PUSHWI KrnBuf256 K.LoadEXEYA.1 >PUSHWI KrnBuf256
>PUSHW BIN.LoadExe.Filename >PUSHW K.LoadEXEYA.Filename
jsr K.STAT Look for AUXTYPE jsr K.STAT Look for AUXTYPE
bcs .9 bcs .9
@ -37,12 +37,12 @@ BIN.LoadEXEYA.1 >PUSHWI KrnBuf256
>PUSHYA Push AUXTYPE >PUSHYA Push AUXTYPE
>PUSHBI 6 S.FILEINFO.TYPE.BIN >PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI SYS.FOPEN.R >PUSHBI SYS.FOPEN.R
>PUSHW BIN.LoadExe.Filename >PUSHW K.LoadEXEYA.Filename
jsr K.LoadFile jsr K.LoadFile
.9 bcs .99 Error Loading file .9 bcs .99 Error Loading file
>STYA BIN.Relocate.SegLen >STYA BIN.Relocate.SegLen
stx BIN.LoadExe.hMem save hMem stx K.LoadEXEYA.hMem save hMem
txa txa
jsr K.GetMemPtrA jsr K.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
@ -57,7 +57,7 @@ BIN.LoadEXEYA.1 >PUSHWI KrnBuf256
lda BIN.Relocate.Start Get AUXTYPE for actual Base Address lda BIN.Relocate.Start Get AUXTYPE for actual Base Address
clc clc
adc BIN.Relocate.SegLen adc BIN.Relocate.SegLen
sta BIN.Relocate.End compute Range End=AUXTYPE+FILELEN sta BIN.Relocate.End compute Range End=AUXTYPE+FILELEN
lda BIN.Relocate.Start+1 lda BIN.Relocate.Start+1
adc BIN.Relocate.SegLen+1 adc BIN.Relocate.SegLen+1
@ -73,14 +73,13 @@ BIN.LoadEXEYA.1 >PUSHWI KrnBuf256
sta BIN.Relocate.Offset+1 sta BIN.Relocate.Offset+1
jsr Bin.RelocateEXE jsr Bin.RelocateEXE
bcs .98 relocation error, dicard Code segment
>LDYA BIN.LoadExe.Filename get back bin path >LDYA K.LoadEXEYA.Filename get back bin path
jsr K.NewPStrYA make a copy of this string >SYSCALL SYS.NewPStrYA make a copy of this string
bcs .98 bcs .98
phx save copy phx save copy
lda BIN.LoadExe.hMem lda K.LoadEXEYA.hMem
jsr K.GetMemByIDA jsr K.GetMemByIDA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
@ -92,22 +91,22 @@ BIN.LoadEXEYA.1 >PUSHWI KrnBuf256
ldy #S.MEM.BIN ldy #S.MEM.BIN
sta (ZPQuickPtr1),y sta (ZPQuickPtr1),y
lda BIN.LoadExe.hMem lda K.LoadEXEYA.hMem
tax return hMEM to Caller... tax return hMEM to Caller...
jsr K.GetMemPtrA jsr K.GetMemPtrA
clc ...and Y,A=PTR to CS clc ...and Y,A=PTR to CS
rts rts
.98 pha .98 pha
lda BIN.LoadExe.hMem lda K.LoadEXEYA.hMem
jsr K.FreeMemA Discard Loaded Code jsr K.FreeMemA Discard Loaded Code
pla pla
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
BIN.LoadExe.Filename .BS 2 K.LoadEXEYA.Filename .BS 2
BIN.LoadExe.hMem .BS 1 K.LoadEXEYA.hMem .BS 1
*-------------------------------------- *--------------------------------------
* BIN.InstallDRV * BIN.InstallDRV
* pDrv = .DRV File Loaded Address * pDrv = .DRV File Loaded Address
@ -326,6 +325,9 @@ BIN.RelocateEXE ldy #H.BIN.JMP relocate Main JMP
ldy #H.BIN.RELOC.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes) ldy #H.BIN.RELOC.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes)
>DEBUG
.HS 2C bit abs .HS 2C bit abs
*-------------------------------------- *--------------------------------------
BIN.RelocateDRV ldy #0 BIN.RelocateDRV ldy #0
@ -418,8 +420,7 @@ BIN.RelocateDRV ldy #0
inc ZPQuickPtr1+1 inc ZPQuickPtr1+1
bra .3 next opcode.... bra .3 next opcode....
.8 clc .8 rts
rts
*-------------------------------------- *--------------------------------------
* 65C02 OPCODES * 65C02 OPCODES
* Bit 3 : 1 = absolute addressing * Bit 3 : 1 = absolute addressing

View File

@ -25,7 +25,7 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray
bcs .99 bcs .99
stx K.LoadDrv.hFullName stx K.LoadDrv.hFullName
jsr BIN.LoadExeYA Y,A =filename full path jsr K.LoadExeYA Y,A =filename full path
bcs .98 bcs .98
>STYA pDrv >STYA pDrv

View File

@ -61,7 +61,7 @@ KERNEL.SYSCALL
.DA K.LoadDrvYA $50 .DA K.LoadDrvYA $50
.DA K.LoadLibYA .DA K.LoadLibYA
.DA K.UnloadLibA .DA K.UnloadLibA
.DA 0 .DA K.LoadExeYA
.DA K.TimeYA .DA K.TimeYA
.DA K.CTime2Time .DA K.CTime2Time
.DA K.PTime2Time .DA K.PTime2Time

View File

@ -25,7 +25,7 @@ K.LoadLibYA >STYA K.LoadLib.Name save libname for K.FileSearch
stx K.LoadLib.hFullName stx K.LoadLib.hFullName
jsr BIN.LoadExeYA Y,A=filename full path jsr K.LoadExeYA Y,A=filename full path
bcs .98 bcs .98
stx K.LoadLib.hMem stx K.LoadLib.hMem

View File

@ -257,7 +257,7 @@ PS.Init >LDYA K.CreateProcess.CmdLine
pla Restore PTR... pla Restore PTR...
ply ply
jsr BIN.LoadEXEYA Y,A=filename full path >SYSCALL SYS.LoadExeYA Y,A=filename full path
bcs .9 bcs .9
>STYA ZPQuickPtr4 save PTR to Code Segment >STYA ZPQuickPtr4 save PTR to Code Segment