mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
Kernel version 0.8 : LSDEV, adding ProDOS device listing
This commit is contained in:
parent
16a70ed131
commit
7a030f049b
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
BIN
A2OSX.DEV.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
202
BIN/LSDEV.S.txt
202
BIN/LSDEV.S.txt
@ -9,11 +9,11 @@ AUTO 6
|
||||
.TF /A2OSX.BOOT/BIN/LSDEV
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.DEV/INC/MACROS.I
|
||||
.INB /A2OSX.DEV/INC/PRODOS.I
|
||||
.INB /A2OSX.DEV/INC/A2OSX.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPPTR2 .EQ ZPBIN+2
|
||||
ZPPTR3 .EQ ZPBIN+4
|
||||
BlkDevCmd .EQ ZPBIN+2 $42
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -35,15 +35,30 @@ CS.START cld
|
||||
.DA CS.QUIT
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
L.MSG2 .DA MSG2
|
||||
L.MSG3 .DA MSG3
|
||||
L.RAM .DA RAM
|
||||
L.DISK2 .DA DISK2
|
||||
L.GENERIC .DA GENERIC
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYAI DevMgr.Table
|
||||
CS.INIT jsr DumpA2osXDev
|
||||
bcs .9
|
||||
|
||||
jsr DumpProDOSDev
|
||||
bcs .9
|
||||
|
||||
lda #0 tell TSKMGR that all done ok, but
|
||||
.9 sec we do not want to stay in memory
|
||||
rts
|
||||
*--------------------------------------
|
||||
DumpA2osXDev >LDYA L.MSG0
|
||||
>SYSCALL CPrintFYA
|
||||
|
||||
>LDYAI DevMgr.Table
|
||||
>STYA ZPPTR1
|
||||
stz DEV.ID
|
||||
|
||||
>LDYA L.MSG0
|
||||
>SYSCALL CPrintFYA
|
||||
|
||||
.2 lda (ZPPTR1)
|
||||
cmp #$D8
|
||||
bne .8
|
||||
@ -80,8 +95,162 @@ CS.INIT >LDYAI DevMgr.Table
|
||||
cmp #K.DEV.MAX
|
||||
bne .2
|
||||
|
||||
.8 lda #0 tell TSKMGR that all done ok, but
|
||||
.9 sec we do not want to stay in memory
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DumpProDOSDev >LDYA L.MSG2
|
||||
>SYSCALL CPrintFYA
|
||||
|
||||
stz DEV.ID
|
||||
|
||||
.1 ldx DEV.ID
|
||||
inc DEV.ID
|
||||
|
||||
cpx DEVCNT
|
||||
bne .11
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.11 lda #1
|
||||
sta Drive
|
||||
|
||||
lda DEVLST,x
|
||||
bpl .2
|
||||
|
||||
inc Drive
|
||||
|
||||
.2 and #$F0
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay Y = DSSS*2
|
||||
|
||||
lsr
|
||||
and #$7
|
||||
sta Slot
|
||||
|
||||
* lda DEVPTRS,y
|
||||
* sta ZPPTR1
|
||||
stz ZPPTR1
|
||||
lda DEVPTRS+1,y
|
||||
sta ZPPTR1+1
|
||||
|
||||
cmp #$C1
|
||||
bcc .1 3rd Party Driver loaded in RAM...
|
||||
|
||||
cmp #$C8
|
||||
bcs .4 In ProDOS Space.../RAM or DisK II
|
||||
|
||||
ldx #SmartPort.SIG-SmartPort.OFS
|
||||
|
||||
.3 ldy SmartPort.OFS-1,x Check if there is a smartport firmware
|
||||
lda (ZPPTR1),y
|
||||
cmp SmartPort.SIG-1,x
|
||||
bne .6 not a smartport...go check $CnFE
|
||||
dex
|
||||
bne .3
|
||||
|
||||
jsr GO.SmartPort Perform a Smartpot STATUS call
|
||||
bcs .1
|
||||
|
||||
jsr PrintDevStatus
|
||||
|
||||
jmp .1
|
||||
|
||||
.4 cmp #$ff RAM ?
|
||||
bne .5
|
||||
>LDYA L.RAM
|
||||
bra .7
|
||||
|
||||
.5 >LDYA L.DISK2
|
||||
bra .7
|
||||
|
||||
.6 >LDYA L.GENERIC
|
||||
|
||||
.7 >STYA .71+1
|
||||
ldy #16
|
||||
.71 lda $ffff,y
|
||||
sta UsrBuf256+S.SPSTAT.NAME,y
|
||||
dey
|
||||
bpl .71
|
||||
|
||||
>DEBUG
|
||||
|
||||
* jsr GO.BlockDev
|
||||
bcs .8
|
||||
stx UsrBuf256+S.SPSTAT.BLKNUM
|
||||
sty UsrBuf256+S.SPSTAT.BLKNUM+1
|
||||
stz UsrBuf256+S.SPSTAT.BLKNUM+2
|
||||
|
||||
jsr PrintDevStatus
|
||||
|
||||
.8 jmp .1
|
||||
*--------------------------------------
|
||||
S.SPSTAT.STATUS .EQ 0
|
||||
S.SPSTAT.STATUS.BLK .EQ %10000000
|
||||
S.SPSTAT.STATUS.WRT .EQ %01000000
|
||||
S.SPSTAT.STATUS.RD .EQ %00100000
|
||||
S.SPSTAT.STATUS.ONL .EQ %00010000
|
||||
S.SPSTAT.STATUS.FMT .EQ %00001000
|
||||
S.SPSTAT.STATUS.WRP .EQ %00000100
|
||||
S.SPSTAT.STATUS.IRQ .EQ %00000010
|
||||
S.SPSTAT.STATUS.OPN .EQ %00000001
|
||||
S.SPSTAT.BLKNUM .EQ 1
|
||||
S.SPSTAT.NAME .EQ 4
|
||||
S.SPSTAT.TYPE .EQ 21
|
||||
S.SPSTAT.SUBTYP .EQ 22
|
||||
S.SPSTAT.VER .EQ 23
|
||||
S.SPSTAT .EQ 25
|
||||
*--------------------------------------
|
||||
GO.BlockDev stz BlkDevCmd
|
||||
jmp (ZPPTR1)
|
||||
*--------------------------------------
|
||||
GO.SmartPort ldy #$ff
|
||||
lda (ZPPTR1),y
|
||||
|
||||
inc
|
||||
inc
|
||||
inc
|
||||
sta .2+1 Entrypoint Offset=+3
|
||||
|
||||
lda ZPPTR1+1 Get $Cn
|
||||
sta .2+2
|
||||
|
||||
and #$0f
|
||||
cmp Slot Driver Slot match Dev Slot ?
|
||||
beq .1 yes...
|
||||
|
||||
inc Slot
|
||||
inc Slot
|
||||
inc Slot
|
||||
inc Drive no...
|
||||
inc Drive Must have been remapped by ProDOS
|
||||
|
||||
.1 stz .3 CMD=Status
|
||||
lda Drive
|
||||
sta SMP.Params+1 UnitNum
|
||||
|
||||
.2 jsr $ffff
|
||||
.3 lda SMP.Params will be relocated
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintDevStatus
|
||||
ldy #S.SPSTAT.BLKNUM
|
||||
lda /UsrBuf256
|
||||
>PUSHYA
|
||||
|
||||
ldy #S.SPSTAT.NAME
|
||||
lda /UsrBuf256
|
||||
>PUSHYA
|
||||
|
||||
>PUSHB Drive
|
||||
>PUSHB Slot
|
||||
>PUSHB UsrBuf256 STATUS
|
||||
>PUSHB Dev.ID
|
||||
|
||||
>LDYA L.MSG3
|
||||
>SYSCALL CPrintFYA
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN
|
||||
@ -90,9 +259,26 @@ CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
SmartPort.OFS .HS 01030507
|
||||
SmartPort.SIG .HS 20000300
|
||||
DiskII.OFS .HS 010305FF
|
||||
DiskII.SIG .HS 20000300
|
||||
MSG0 >CSTR "ID Flags Name Address\n"
|
||||
MSG1 >CSTR "%03d %b %4S $%H\n"
|
||||
MSG2 >CSTR "ID Flags Name Description Size\n"
|
||||
MSG3 >CSTR "%03d %b S%dD%d %S %L\n"
|
||||
RAM >PSTR "ProDOS Ram Disk "
|
||||
DISK2 >PSTR "Apple Disk ][ "
|
||||
GENERIC >PSTR "Generic Blk Dev "
|
||||
*--------------------------------------
|
||||
SMP.Params .DA #3 Param Count
|
||||
.BS 1 unitNumber
|
||||
.DA UsrBuf256
|
||||
.DA #3 Return DIB
|
||||
*--------------------------------------
|
||||
DEV.ID .BS 1
|
||||
Slot .BS 1
|
||||
Drive .BS 1
|
||||
MAN
|
||||
SAVE BIN/LSDEV.S
|
||||
ASM
|
||||
|
@ -117,6 +117,7 @@ DATETIME .EQ $BF06
|
||||
SYSERR .EQ $BF09
|
||||
SYSDEATH .EQ $BF0C
|
||||
SERR .EQ $BF0F
|
||||
DEVPTRS .EQ $BF10
|
||||
*DEVPTRS0D1 .EQ $BF10
|
||||
*DEVPTRS1D1 .EQ $BF12
|
||||
*DEVPTRS2D1 .EQ $BF14
|
||||
|
@ -29,6 +29,13 @@ AUTO 6
|
||||
* A = Param Count
|
||||
*--------------------------------------
|
||||
jmp A2osX.MLICALL1
|
||||
*--------------------------------------
|
||||
* BLKCALL (AUXLC to MAINLC)
|
||||
* Used by Kernel
|
||||
* In:
|
||||
* Y,A = Ptr To Param Block
|
||||
*--------------------------------------
|
||||
jmp A2osX.BLKCALL1
|
||||
*--------------------------------------
|
||||
.BS $BE10-*
|
||||
*--------------------------------------
|
||||
@ -90,6 +97,8 @@ A2osX.MLICALL1 stx .1
|
||||
jsr GO.A2osX
|
||||
rts
|
||||
*--------------------------------------
|
||||
A2osX.BLKCALL1
|
||||
*--------------------------------------
|
||||
GO.ProDOS lda $D000 We re coming from AUXLC, saving bank...
|
||||
sta GO.A2osX.BNK+1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user