Files
2026-01-18 17:18:42 +01:00

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