NAM XIBEC TEST ROUTINES 1.2 OPT PAG * 24 APR 82 MICHAEL HOLLEY * 2 Dec 82 REVISED DATA EQU $E010 STAT EQU $E011 MODE EQU $E011 DATACK EQU $E012 * MODE BITS NRESET EQU %0000 RESET EQU %0001 SEL EQU %0010 ACK EQU %0100 ACKENA EQU %1000 * STATUS POSITIONS REQ EQU %00000001 MSG EQU %00001000 CD EQU %00010000 BUSY EQU %00100000 IO EQU %01000000 REQMEM EQU %10000000 ORG $0080 CMTYPE RMB 2 UNIT RMB 1 STBUF RMB 6 ERROR STATUS BUFFER ORG $2000 BUFF1 RMB $100 READ BUFFER BUFF2 RMB $100 WRITE BUFFER ORG $0100 * COMMAND TABLE TSTDRV FCB $00,$00,$00,$00,$00,$00 RECAL FCB $01,$00,$00,$00,$00,$00 REQST FCB $03,$00,$00,$00,$00,$00 FORMAT FCB $04,$00,$00,$00,$03,$00 CHFMAT FCB $05,$00,$00,$00,$03,$00 FMATRK FCB $06,$00,$00,$00,$03,$00 READ FCB $08,$00,$00,$00,$01,$00 WRITE FCB $0A,$00,$00,$00,$01,$00 SEEK FCB $0B,$00,$00,$00,$00,$00 INTDR FCB $0C,$00,$00,$00,$00,$00 RAMDIA FCB $E0,$00,$00,$00,$00,$00 DRVDIA FCB $E3,$00,$00,$00,$00,$00 CRTDIA FCB $E4,$00,$00,$00,$00,$00 ORG $1000 *********************************** * DIAGNOSTICS START JSR RESCTR RESET CONTROLLER LDX #CRTDIA STX CMTYPE LDAA #1 XIBEC IS UNIT 1 STAA UNIT JSR COMMD JSR ESTAT GET STATUS BEQ OK LDX #REQST REQUEST ERROR STATUS STX CMTYPE JSR COMMD LDX #STBUF JSR RDST JSR ESTAT GET END STATUS SEC BRA DONE OK CLC DONE RTS ************************************** READS LDX #READ STX CMTYPE LDAA #1 XIBEC IS UNIT 1 STAA UNIT JSR COMMD LDX #BUFF1 JSR RDSEC READ SECTOR JSR ESTAT GET STATUS BEQ OK LDX #REQST REQUEST ERROR STATUS STX CMTYPE JSR COMMD LDX #STBUF JSR RDST JSR ESTAT GET END STATUS SEC BRA DONE ***************************************** * WRITE COMMAND WRITES LDX #WRITE STX CMTYPE LDAA #1 XIBEC IS UNIT 1 STAA UNIT JSR COMMD LDX #BUFF2 JSR WRSEC WRITE SECTOR JSR ESTAT GET STATUS BEQ OK LDX #REQST REQUEST ERROR STATUS STX CMTYPE JSR COMMD LDX #STBUF JSR RDST JSR ESTAT GET END STATUS SEC JMP DONE *********************************** * SELECT CONTROLLER AND SEND COMMAND COMMD LDAA UNIT STAA DATA LDAA #SEL STAA MODE SELECT LINE LOW CMM1 LDAA STAT BITA #BUSY BEQ CMM1 LOOP UNTIL BUSY LOW LDX CMTYPE LDAB #5 NUMBER OF BYTES-1 TO SEND LDAA 0,X STAA DATA FIRST BYTE OF COMMAND LDAA #ACKENA STAA MODE ENABLE AUTO ACK & CLEAR SELECT CMM3 TST STAT WAIT UNTIL ACK BPL CMM3 INX LDAA 0,X STAA DATACK DECB BNE CMM3 RTS *********************************** * GET STATUS BYTES ESTAT TST STAT BPL ESTAT LDAA DATACK GET NEXT TO LAST BYTE CMM9 TST STAT BPL CMM9 TST DATACK DUMMY READ CMPA #00 RTS *********************************** * READ STATUS RDST LDAB #4 NUMBER OF STATUS BYTES RDST3 TST STAT WAIT UNTIL REQ BPL RDST3 LDAA DATACK STAA 0,X INX DECB BNE RDST3 RTS *************************************** * READ SECTOR RDSEC LDAB #0 256 BYTES RDSEC3 LDAA STAT WAIT UNTIL REQ BITA #CD BNE RDSEC6 BMI RDSEC3 LDAA DATACK STAA 0,X INX DECB BNE RDSEC3 RDSEC6 RTS *************************************** * WRITE SECTOR WRSEC LDAB #0 256 BYTES WRSEC3 LDAA STAT WAIT UNTIL REQ BITA #CD BNE WRSEC6 BMI WRSEC3 LDAA 0,X STAA DATACK INX DECB BNE WRSEC3 WRSEC6 RTS ************************************** *RESET CONTROLLER RESCTR LDAA #NRESET STAA MODE LDAA #RESET STAA MODE CPX CMTYPE CPX CMTYPE DELAY LDAA #NRESET STAA MODE LDAA DATACK CLEAR REQ MEMORY NOP * HAND SHAKE HAND LDAB #00 256 BYTES HAND1 LDAA #ACK STAA MODE CLR MODE DECB BNE HAND1 RTS END