mirror of
https://github.com/A2osX/A2osX.git
synced 2026-04-19 14:17:01 +00:00
215 lines
3.7 KiB
Plaintext
215 lines
3.7 KiB
Plaintext
NEW
|
|
AUTO 3,1
|
|
.LIST OFF
|
|
.OP 65C02
|
|
.OR $2000
|
|
.TF bin/lsfd
|
|
*--------------------------------------
|
|
.INB inc/macros.i
|
|
.INB inc/a2osx.i
|
|
.INB inc/a2osx.api.i
|
|
.INB inc/io.i
|
|
*--------------------------------------
|
|
.DUMMY
|
|
.OR ZPBIN
|
|
ZS.START
|
|
hFD .BS 2
|
|
pFD .BS 2
|
|
pName .BS 2
|
|
Tmp .BS 1
|
|
Err .BS 1
|
|
|
|
ZS.END .ED
|
|
*--------------------------------------
|
|
* File Header (16 Bytes)
|
|
*--------------------------------------
|
|
CS.START cld
|
|
jmp (.1,x)
|
|
.DA #$61 6502,Level 1 (65c02)
|
|
.DA #2 BIN Layout Version 2
|
|
.DA #0 S.PS.SIG
|
|
.DA #0
|
|
.DA CS.END
|
|
.DA ID.END
|
|
.DA DS.END
|
|
.DA #64 Stack Size
|
|
.DA #ZS.END-ZS.START Zero Page Size
|
|
*--------------------------------------
|
|
* Relocation Table
|
|
*--------------------------------------
|
|
.1 .DA CS.INIT
|
|
.DA CS.RUN
|
|
.DA CS.SIG
|
|
.DA CS.QUIT
|
|
*--------------------------------------
|
|
L.MSG.Header .DA MSG.Header
|
|
L.MSG.FD .DA MSG.FD
|
|
L.MSG.DEV .DA MSG.DEV
|
|
L.MSG.DEV.ERR .DA MSG.DEV.ERR
|
|
L.MSG.DEV.NA .DA MSG.DEV.NA
|
|
*--------------------------------------
|
|
J.FD .DA DumpFD.REG
|
|
.DA DumpFD.DIR
|
|
.DA DumpFD.CDEV
|
|
.DA DumpFD.CDEV
|
|
.DA DumpFD.LNK
|
|
.DA DumpFD.DSOCK
|
|
.DA DumpFD.SSOCK
|
|
.DA DumpFD.PIPE
|
|
*--------------------------------------
|
|
L.FD.T .DA FD.T.REG
|
|
.DA FD.T.DIR
|
|
.DA FD.T.CDEV
|
|
.DA FD.T.BDEV
|
|
.DA FD.T.LNK
|
|
.DA FD.T.DSOCK
|
|
.DA FD.T.SSOCK
|
|
.DA FD.T.PIPE
|
|
.DA 0
|
|
*--------------------------------------
|
|
CS.INIT clc
|
|
rts
|
|
*--------------------------------------
|
|
CS.RUN >LDYA L.MSG.Header
|
|
>LIBC PutS
|
|
|
|
lda #0
|
|
|
|
.1 sta hFD
|
|
>KAPI GetFDByID
|
|
bcs .7
|
|
|
|
>STYA pFD
|
|
|
|
stz pName
|
|
stz pName+1
|
|
|
|
lda hFD
|
|
>KAPI GetNameByID
|
|
bcs .4
|
|
|
|
>STYA pName
|
|
|
|
.4 jsr DumpFD
|
|
|
|
>LDYA pFD
|
|
>LIBC Free
|
|
|
|
>LDYA pName
|
|
beq .7
|
|
|
|
>LIBC Free
|
|
|
|
.7 lda hFD
|
|
|
|
inc
|
|
inc
|
|
cmp #K.FD.MAX*2
|
|
bcc .1
|
|
|
|
lda #0
|
|
|
|
* sec
|
|
|
|
.9 rts
|
|
*--------------------------------------
|
|
DumpFD >SS
|
|
>PUSHW L.MSG.FD
|
|
|
|
>PUSHB hFD
|
|
|
|
ldy #S.FD.T
|
|
lda (pFD),y
|
|
tax
|
|
>PUSHW L.FD.T,x
|
|
|
|
>PUSHBI 3
|
|
|
|
>LIBC PrintF
|
|
>SR
|
|
bcs .9
|
|
|
|
>SS
|
|
>PUSHW L.MSG.DEV
|
|
>PUSHW pName
|
|
>PUSHBI 2
|
|
>LIBC PrintF
|
|
>SR
|
|
bcs .9
|
|
|
|
lda (pFD) #S.FD.T
|
|
|
|
tax
|
|
jmp (J.FD,x)
|
|
|
|
.9 rts
|
|
*--------------------------------------
|
|
DumpFD.CDEV
|
|
DumpFD.BDEV
|
|
|
|
DumpFD.REG
|
|
DumpFD.DIR
|
|
|
|
DumpFD.LNK
|
|
DumpFD.DSOCK
|
|
DumpFD.SSOCK
|
|
DumpFD.PIPE
|
|
|
|
>LDYA L.MSG.DEV.NA
|
|
>LIBC PutS
|
|
|
|
.9 rts
|
|
*--------------------------------------
|
|
PrintErr sta Err
|
|
|
|
>SS
|
|
>PUSHB Err
|
|
>PUSHW pData DATABUF
|
|
>KAPI GetErrMsg
|
|
>SR
|
|
|
|
>SS
|
|
>PUSHW L.MSG.DEV.ERR
|
|
>PUSHB Err
|
|
>PUSHW pData DATABUF
|
|
>PUSHBI 3
|
|
>LIBC PrintF
|
|
>SR
|
|
rts
|
|
*--------------------------------------
|
|
CS.QUIT clc
|
|
CS.SIG rts
|
|
*--------------------------------------
|
|
CS.END .EQ *
|
|
*--------------------------------------
|
|
MSG.Header .CZ "FD Type Name"
|
|
MSG.FD .CZ "%h %4s "
|
|
MSG.DEV .CZ "%13s "
|
|
MSG.DEV.ERR .CZ "[%h] %s\r\n"
|
|
|
|
MSG.DEV.B .CZ "%10u\r\n"
|
|
MSG.DEV.NA .CZ "n/a"
|
|
*--------------------------------------
|
|
MSG.SFLAGS .AS "bwrlneio"
|
|
*--------------------------------------
|
|
FD.T.REG .AZ "REG"
|
|
FD.T.DIR .AZ "DIR"
|
|
FD.T.CDEV .AZ "CDEV"
|
|
FD.T.BDEV .AZ "BDEV"
|
|
FD.T.LNK .AZ "LNK"
|
|
FD.T.DSOCK .AZ "DSCK"
|
|
FD.T.SSOCK .AZ "SSCK"
|
|
FD.T.PIPE .AZ "PIPE"
|
|
*--------------------------------------
|
|
ID.END .EQ *
|
|
*--------------------------------------
|
|
.DUMMY
|
|
.OR 0
|
|
|
|
DATABUF .BS 64
|
|
DS.END .ED
|
|
*--------------------------------------
|
|
MAN
|
|
SAVE usr/src/bin/lsfd.s
|
|
ASM
|