NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/lsdev *-------------------------------------- .INB inc/macros.i .INB inc/mli.i .INB inc/a2osx.i .INB inc/kernel.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPFDPtr .BS 2 hFD .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA #0 S.PS.F.EVENT .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.EVENT .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.DIB .DA MSG.DEV.DIB L.MSG.DEV.NA .DA MSG.DEV.NA L.MSG.DEV.B .DA MSG.DEV.B 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 >SYSCALL PutS ldx #1 .1 stx hFD lda FDs.pHI-1,x beq .7 sta ZPFDPtr+1 lda FDs.pLO-1,x sta ZPFDPtr jsr DumpFD bcs .9 ldx hFD .7 inx cpx #K.FD.MAX+1 bne .1 .8 lda #0 sec .9 rts *-------------------------------------- DumpFD >PUSHW L.MSG.FD >PUSHB hFD ldy #S.FD.DEV.BUSID lda (ZPFDPtr),y asl asl asl asl iny #S.FD.DEV.DEVID ora (ZPFDPtr),y >PUSHA lda (ZPFDPtr) S.FD.T tax >PUSHW L.FD.T,x ldy #S.FD.DEV.BUSPTR+1 >PUSHB (ZPFDPtr),y dey >PUSHB (ZPFDPtr),y >PUSHBI 6 >SYSCALL PrintF lda (ZPFDPtr) tax jmp (J.FD,x) *-------------------------------------- DumpFD.CDEV DumpFD.BDEV >PUSHW L.MSG.DEV lda ZPFDPtr clc adc #S.FD.DEV tay lda ZPFDPtr+1 adc /S.FD.DEV >PUSHYA >PUSHBI 2 >SYSCALL PrintF bcs .9 ldy #DEV.DIB+S.DIB-1 ldx #S.DIB-1 .1 lda BLANK.DIB,x sta (pData),y dey dex bpl .1 lda #S.IOCTL.S.GETDIB >STA.G DEV.IOCTL+S.IOCTL.S >LEA.G DEV.DIB >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR >PUSHB hFD >PUSHBI IOCTL.STATUS >PUSHEA.G DEV.IOCTL >SYSCALL IOCTL bcc DumpFD.DevDIB pha >PUSHW L.MSG.DEV.ERR pla >PUSHA >PUSHBI 1 >SYSCALL PrintF .9 rts *-------------------------------------- DumpFD.DevDIB >PUSHW L.MSG.DEV.DIB >LDA.G DEV.DIB+S.DIB.S ldy #DEV.SFLAGS+7 ldx #7 .1 lsr pha lda #'-' bcc .2 lda MSG.SFLAGS,x .2 sta (pData),y pla dey dex bpl .1 >PUSHEA.G DEV.SFLAGS >PUSHB.G DEV.DIB+S.DIB.T >PUSHB.G DEV.DIB+S.DIB.ST >PUSHEA.G DEV.DIB+S.DIB.IDS >PUSHB.G DEV.DIB+S.DIB.VERSION >PUSHB.G DEV.DIB+S.DIB.VERSION+1 >PUSHBI 8 >SYSCALL PrintF bcs .9 >LDA.G DEV.DIB+S.DIB.S bpl DumpFD.NA char device... >PUSHW L.MSG.DEV.B >PUSHBI 0 >PUSHB.G DEV.DIB+S.DIB.SIZE+2 >PUSHB.G DEV.DIB+S.DIB.SIZE+1 >PUSHB.G DEV.DIB+S.DIB.SIZE >PUSHBI 4 >SYSCALL PrintF .9 rts *-------------------------------------- DumpFD.REG DumpFD.DIR DumpFD.LNK DumpFD.DSOCK DumpFD.SSOCK DumpFD.PIPE DumpFD.NA >LDYA L.MSG.DEV.NA >SYSCALL PutS rts *-------------------------------------- CS.EVENT sec rts *-------------------------------------- CS.QUIT clc rts *-------------------------------------- CS.END MSG.Header .CZ "hFD ID Type Addr Name Status TP.ST IDString Version Size (BLK)" MSG.FD .CZ " %2h %h %4s %H " MSG.DEV .CZ "%12s " MSG.DEV.ERR .CZ "[%h] Device Error.\r\n" MSG.DEV.DIB .CZ "%s %h.%h %16S %3d.%3d " 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" *-------------------------------------- BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .BS 3 .PS "(No IDS String!)" .DA #0 .DA #0 .DA 0 K.VER *-------------------------------------- .DUMMY .OR 0 DS.START DEV.IOCTL .BS S.IOCTL DEV.DIB .BS S.DIB DEV.SFLAGS .BS 9 DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/lsdev.s ASM