Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-01-28 17:42:51 +01:00
parent 92fe5049d4
commit c8d16b5b6c
8 changed files with 139 additions and 51 deletions

Binary file not shown.

View File

@ -3,12 +3,16 @@ NEW
.LIST OFF
*--------------------------------------
HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
>SYSCALL GetMem0
>SYSCALL GetMem
bcs .9
>STYA ZPPTR1
txa
>STA.G HIS.hBuf
lda #0
sta (ZPPTR1)
>STA.G HIS.Count
>STA.G HIS.Index
.9 rts
@ -17,6 +21,7 @@ HIS.Add >LDA.G HIS.hBuf
beq .9
>SYSCALL GetMemPtr
>STYA ZPPTR1
.10 lda #$ff
jsr HIS.GetA Y=ending 0
phy

View File

@ -268,7 +268,7 @@ SYS.LoadTxtFile .EQ $AA
SYS.GetMemStat .EQ $AC
SYS.StrVDup .EQ $AE
SYS.Str2StrV .EQ $B0
SYS.StrVGet .EQ $B0
SYS.ArgV .EQ $B2
SYS.Expand .EQ $B4
SYS.FileSearch .EQ $B6

View File

@ -600,17 +600,14 @@ LDR.AddExtraDevs
sta LDR.SlotIdx
.1 ldx LDR.SlotIdx
ldy LDR.SlotDevType-1,x
bne .8
lda LDR.SlotDevCnt-1,x
cmp #3
bcc .8
ldy LDR.SlotDevType-1,x
bne .2
jsr LDR.AddExtraBlkDevs
bra .8
.2 jsr LDR.AddExtraSPDevs
jsr LDR.AddExtraSPDevs
.8 dec LDR.SlotIdx
bne .1
@ -680,8 +677,8 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
.DA LDR.SPStatus.P
bcs .7
lda LDR.SPStatus.Buf
bpl .7 not a block device
* lda LDR.SPStatus.Buf
* bpl .7 not a block device
ldx LDR.SlotIdx
inc LDR.SlotDevCnt-1,x
@ -734,9 +731,6 @@ LDR.AddBlkDevs php how many drives (carry).
LDR.AddBlkDevs.RTS
rts
*--------------------------------------
LDR.AddExtraBlkDevs
rts
*--------------------------------------
LDR.AddExtraSPDevs
ldy #$FF get smartport address.
lda (idxl),y
@ -768,8 +762,8 @@ LDR.AddExtraSPDevs
.1 jsr spvect do status call
.HS 00
.DA LDR.SPStatus.P
lda LDR.SPStatus.Buf is this a block device?
bpl .2
* lda LDR.SPStatus.Buf is this a block device?
* bpl .2
jsr LDR.MountSPDevs
bcs .8

View File

@ -127,7 +127,9 @@ DRV.BLK txa
iny
lda (pFD),y
sta .3+2
jsr GO.ProDOS
ldx #5
.2 lda DRV.BLK.PARAMS,x
sta $42,x
@ -164,6 +166,15 @@ DRV.SmartPort cld
lda (pFD),y
sta .1+2
* cmp #$D0
* bcc .1
* jsr GO.ProDOS Remapped SP
* jsr .1
* jsr GO.A2osX
* rts
.1 jsr $ffff
.2 .BS 1
.3 .BS 2

View File

@ -689,24 +689,24 @@ DevMgrInit >LDYAI MSG.DEV
.4 ldx #SmartPort.SIG-SmartPort.OFS-1
.5 ldy SmartPort.OFS,x Check if there is a smartport firmware
.5 ldy SmartPort.OFS,x Check if there is a smartport firmware
lda (ZPPtr1),y
cmp SmartPort.SIG,x
bne .8 not a Disk Controller...
bne .8 not a Disk Controller...
dex
bpl .5
ldy #7
lda (ZPPtr1),y
bne .6 $Cn07=00 : SmartPort
bne .6 $Cn07=00 : SmartPort
jsr DevMgrInit.SP
lda #A2osX.S.SP
bra .7
.53 jsr DevMgrInit.REMAP Remapped SP devices....
bra .8 don't mark slot as busy
.53 jsr DevMgrInit.RSP Remapped SP devices....
bra .8 don't mark slot as busy
.6 jsr DevMgrInit.BLK
lda #A2osX.S.BLK
@ -722,23 +722,15 @@ DevMgrInit >LDYAI MSG.DEV
rts
*--------------------------------------
DevMgrInit.RAM ldx #0
>LDYAI DRV.RamDrive
bra DevMgrInit.AddBDev
.HS 2C BIT ABS
*--------------------------------------
DevMgrInit.DII ldx #2
>LDYAI DRV.DiskII
bra DevMgrInit.AddBDev
.HS 2C BIT ABS
*--------------------------------------
DevMgrInit.USR ldx #4
.HS 2C BIT ABS
*--------------------------------------
DevMgrInit.BLK ldx #6
.HS 2C BIT ABS
*--------------------------------------
DevMgrInit.REMAP
ldx #10
*--------------------------------------
>LDYAI DRV.BlkDevice
bra DevMgrInit.AddBDev
*--------------------------------------
DevMgrInit.SP ldy #$ff
@ -746,16 +738,22 @@ DevMgrInit.SP ldy #$ff
clc
adc #3 Compute smartport entry point
sta FD.BDEV+S.FD.DEV.BUSPTR
ldx #8
>LDYAI DRV.SmartPort
.HS 2C BIT ABS
DevMgrInit.RSP ldx #10
*--------------------------------------
DevMgrInit.AddBDev
>LDYA DRV.BLKDEV,x
>STYA FD.BDEV+S.FD.DEV.DRVPTR
>PUSHW MSG.BLKDEV.TBL,x
>PUSHW FD.BDEV+S.FD.DEV.BUSPTR
>PUSHWI FD.BDEV.NAME
>PUSHBI 4
>PUSHBI 6
>LDYAI MSG.BLKDEV
>SYSCALL2 printf
>PUSHWI FD.BDEV.NAME
>LDYAI FD.BDEV
>SYSCALL2 MKDev
@ -1136,7 +1134,8 @@ SYSSCREEN.TOP .AZ "A2osX 0.93 Console"
MSG.Init3 .AS "A2osX[Stage3]:Init"
.AZ "\r\n*** Press Ctrl-R for ROOT Mode ***\r\n"
MSG.DEV .AZ "Device Manager..."
MSG.BLKDEV .AZ " Adding Device: /dev/%s, Type: %s\r\n"
*--------------------------------------
MSG.BLKDEV .AZ " Adding Device: /dev/%s, Addr:%H, Type: %s\r\n"
MSG.BLKDEV.TBL .DA MSG.BLKDEV.RAM
.DA MSG.BLKDEV.DII
.DA MSG.BLKDEV.USR
@ -1146,9 +1145,16 @@ MSG.BLKDEV.TBL .DA MSG.BLKDEV.RAM
MSG.BLKDEV.RAM .AZ "/RAM Disk"
MSG.BLKDEV.DII .AZ "Disk ]["
MSG.BLKDEV.USR .AZ "User"
MSG.BLKDEV.BLK .AZ "Generic Block"
MSG.BLKDEV.SP .AZ "Smartport"
MSG.BLKDEV.RSP .AZ "Remapped Smartport"
MSG.BLKDEV.BLK .AZ "Generic Block"
MSG.BLKDEV.SP .AZ "Smart Port"
MSG.BLKDEV.RSP .AZ "Remapped SP"
DRV.BLKDEV .DA DRV.RamDrive
.DA DRV.DiskII
.DA DRV.BlkDevice
.DA DRV.BlkDevice
.DA DRV.SmartPort
.DA DRV.BlkDevice
*--------------------------------------
MSG.IRQ .AZ "Interrupt Manager..."
MSG.IRQ.IIGS .AZ " Apple IIgs VBL IRQ Activated."
MSG.IRQ.VBL .AZ " Mouse Card VBL IRQ Activated."

View File

@ -106,7 +106,7 @@ K.SYSCALL .DA 0 $00
.DA K.GetMemStat
.DA K.StrVDup
.DA K.Str2StrV $B0
.DA K.StrVGet $B0
.DA K.ArgV
.DA K.Expand
.DA K.FileSearch

View File

@ -8,16 +8,61 @@ NEW
* X = hStrV
* Y,A = Ptr
*\--------------------------------------
K.NewStrV
*K.NewStrV
*/--------------------------------------
* # StrVGet
* **In:**
* A = hStrV
* X = index
* ## ASM
* `>PUSHB hSTRV`
* `>PUSHW index`
* `>SYSCALL StrVGet`
* ## RETURN VALUE
* Y,A = Ptr
* CC: Y,A = Ptr
* CS: Y,A = NULL
*\--------------------------------------
K.StrVGet
K.StrVGet >PULLA index
eor #$ff
sta ZPPtr2
>PULLA
eor #$ff
sta ZPPtr2+1
>PULLA
>SYSCALL GetMemPtr
>STYA ZPPtr1 strV
.1 inc ZPPtr2
bne .2
inc ZPPtr2
beq .8
.2 jsr STRV.NStrPtr1
bcc .1
.9 rts
.8 lda (ZPPtr1)
tay
dec
beq .9
>LDYA ZPPtr1
clc
rts
*/--------------------------------------
* # StrVAdd
* ## ASM
* `>PUSHB hSTRV`
* `>PUSHW str`
* `>SYSCALL StrVAdd`
* ## RETURN VALUE
*
*\--------------------------------------
*K.StrVAdd >PULLW ZPPtr2 str
* >PULLA
* >SYSCALL GetMemPtr
* >STYA ZPPtr1
*/--------------------------------------
* # StrVDup
* **In:**
@ -92,7 +137,7 @@ K.StrVDup >STYA ZPPtr1
.9 rts
*/--------------------------------------
* # Str2StrV
* Expand String and convert to ArgV List
* Expand String and convert to StrV List
* ## C
* short int str2strv(char* args, char* argv[])
* ## ASM
@ -102,8 +147,6 @@ K.StrVDup >STYA ZPPtr1
* ## RETURN VALUE
* A = Arg count
*\--------------------------------------
ARG.bInQuote .EQ ZPPtr3
*--------------------------------------
K.Str2StrV jsr K.Expand
bcs .9
@ -112,21 +155,25 @@ K.Str2StrV jsr K.Expand
>PULLW ZPPtr2 Get target buffer
ldx #0 Arg Count
stz ARG.bInQuote
ldy #0 bInQuote
.1 jsr SHARED.GetCharPtr1
beq .8
cmp #C.SPACE
beq .1 skip leading spaces
.2 cmp #'"' found a quote ?
bne .3
lda ARG.bInQuote
tya
eor #$ff
sta ARG.bInQuote
tay
bra .7 skip quote and check next char
.3 cmp #C.SPACE
bne .6 regular char ...store...
bit ARG.bInQuote
tya
bmi .6 between quotes... store space...
inx Found one arg !!!
@ -150,6 +197,31 @@ K.Str2StrV jsr K.Expand
rts
.9 >RET 2 Discard target buffer
*--------------------------------------
STRV.NStrPtr1 ldy #$ff
.1 iny
lda (ZPPtr1)
beq .2
inc ZPPtr1
bne .1
inc ZPPtr1+1
bra .1
.2 tya
beq .9
inc ZPPtr1
bne .8
inc ZPPtr1+1 skip \0
.8 clc
rts
.9 sec
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRV
LOAD USR/SRC/SYS/KERNEL.S