NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/spdiag *-------------------------------------- .INB inc/macros.i .INB inc/mli.i .INB inc/a2osx.i .INB inc/kernel.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPtr1 .BS 2 DevId .BS 1 DevCount .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.SP.FOUND .DA MSG.SP.FOUND L.MSG.SP.OK .DA MSG.SP.OK L.MSG.DEV .DA MSG.DEV L.MSG.DEV.DIB .DA MSG.DEV.DIB L.MSG.DEV.C .DA MSG.DEV.C L.MSG.DEV.B .DA MSG.DEV.B L.MSG.ERR .DA MSG.ERR .DA 0 *-------------------------------------- CS.INIT clc rts *-------------------------------------- CS.RUN lda #$C1 sta ZPPtr1+1 lda #$20 JSR >STA.G DEV.SPCallCode >LEA.G DEV.SPCallParam >STYA.G DEV.SPCallCode+4 lda #$60 RTS >STA.G DEV.SPCallCode+6 lda #3 ParamCount >STA.G DEV.SPCallParam >LEA.G DEV.DIB >STYA.G DEV.SPCallParam+2 *-------------------------------------- .1 ldx #SmartPort.SIG-SmartPort.OFS-1 .2 ldy SmartPort.OFS,x Check if there is a smartport firmware lda (ZPPtr1),y cmp SmartPort.SIG,x bne .7 not a Disk Controller... dex bpl .2 >PUSHW L.MSG.SP.FOUND lda ZPPtr1+1 and #7 >PUSHA ldy #$FB lda (ZPPtr1),y Get device id >PUSHA >PUSHBI 2 >SYSCALL PrintF bcs .9 ldy #$ff lda (ZPPtr1),y * clc adc #3 ldy #1 sta (pData),y lda ZPPtr1+1 iny sta (pData),y ldx #0 Unit Number = 0 lda #0 Status Code = Get Controller Status jsr CS.SPStatusCall bcs .6 jsr CS.SPEnum bcs .9 bra .7 .6 jsr CS.SPError bcs .9 .7 inc ZPPtr1+1 lda ZPPtr1+1 cmp #$C8 bne .1 lda #0 sec .9 rts *-------------------------------------- CS.SPEnum >PUSHW L.MSG.SP.OK >PUSHB.G DEV.DIB Unit Count sta DevCount >PUSHBI 1 >SYSCALL PrintF bcs .9 lda DevCount beq .8 stz DevId .1 inc DevId >PUSHW L.MSG.DEV >PUSHB DevId >PUSHBI 1 >SYSCALL PrintF bcs .9 ldx DevId lda #3 Status Code = Get DIB jsr CS.SPStatusCall bcs .6 jsr CS.DumpDIB bcs .9 bra .7 .6 jsr CS.SPError bcs .9 .7 dec DevCount bne .1 .8 clc .9 rts *-------------------------------------- CS.DumpDIB >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 .4 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 bra .8 .4 >PUSHW L.MSG.DEV.C >PUSHBI 0 .8 >SYSCALL PrintF .9 rts *-------------------------------------- CS.SPStatusCall >STA.G DEV.SPCallParam+4 Status Code txa >STA.G DEV.SPCallParam+1 Unit Number jmp (pData) **-------------------------------------- CS.SPError tax >PUSHW L.MSG.ERR txa >PUSHA >PUSHBI 1 >SYSCALL PrintF rts *-------------------------------------- CS.EVENT sec rts *-------------------------------------- CS.QUIT clc rts *-------------------------------------- CS.END MSG.SP.FOUND .CZ "Slot #%2d:DevId = %b, " MSG.SP.OK .CS "Dev Count = %d\r\n" .CZ " Status Typ/Sub IDString Version Size (BLK)\r\n" MSG.DEV .CZ " Dev #%2d:" MSG.DEV.DIB .CZ "%s $%h/$%h %16S %03d.%03d " MSG.DEV.B .CZ "%10u\r\n" MSG.DEV.C .CZ "n/a\r\n" MSG.ERR .CZ "Error : $%h\r\n" *-------------------------------------- MSG.SFLAGS .AS "bwrlneio" *-------------------------------------- SmartPort.OFS .HS 01030507 SmartPort.SIG .HS 20000300 *-------------------------------------- BLANK.DIB .DA #0 .BS 3 .PS "(No IDS String!)" .DA #0 .DA #0 .DA 0 *-------------------------------------- .DUMMY .OR 0 DS.START DEV.SPCallCode .BS 7 jsr $ffff, Call#, ParamPtr, RTS DEV.SPCallParam .BS 8 DEV.DIB .BS S.DIB DEV.SFLAGS .BS 9 DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/spdiag.s ASM