NAM FORMAT HARD DISK (XIBEC) OPT PAG * Michael Holley 08 June 1982 * * Disk formatting program for 6809 FLEX 9.0 * This version is designed for the XIBEC S1410 * controller and the Tandon TM602S drive. * This version assumes XIBEC has address 0 ($01) and * a single drive. * This version doesn't allow for bad tracks or sectors. MAXSEC EQU $FF MAXTRK EQU $4B SYS EQU 64 SECTORS FOR SYSTEM TOTAL EQU MAXTRK*MAXSEC-SYS+MAXSEC INTER EQU 3 INTERLEAVE * GENERAL STORAGE * SECTOR BUFFER ORG $0100 BUFF2 RMB $100 XTEMP1 RMB 2 XTEMP2 RMB 2 * FLEX EQUATES WARMS EQU $CD03 GETCH EQU $CD15 PUTCH EQU $CD18 PSTRNG EQU $CD1E PCRLF EQU $CD24 OUTDEC EQU $CD39 OUTHEX EQU $CD3C INDECM EQU $CD48 SDATE EQU $CC0E SYSTEM DATE SSTACK EQU $C07F ORG $C100 START BRA FORM1 VN FCB $81,'.,$80,':,$80 FCC / XIBEC/ FORM1 LDS #SSTACK LDX #MSG1 "FORMAT ROUTINE" JSR PSTRNG FORM12 JSR GETCH GET RESPONSE ANDA #$5F MAKE IT UPPER CASE CMPA #'Y SEE IF YES BEQ FORM21 JMP EXIT FORM21 LDX #MSG2 JSR PSTRNG JSR CHKDRV CHECK IF DRIVE READY BEQ FORM22 LDX #ABORT1 JMP EXIT1 FORM22 JSR FORMAT FORMAT DRIVE BEQ FORM23 LDX #ABORT2 JMP EXIT1 FORM23 LDX #OKFOR JSR PSTRNG JSR DOSEC WRITE SECTOR INFO BEQ FORM25 LDX #ABORT3 JMP EXIT1 FORM25 JSR DOSIR WRITE SYS INFO RECORD BEQ FORM27 LDX #ABORT5 JMP EXIT1 FORM27 LDX #OKALL JSR PSTRNG LDX #TOTSEC CLR B NO LEADING SPACES JSR OUTDEC BRA EXIT EXIT1 JSR PSTRNG EXIT JMP WARMS * STRINGS MSG1 FCC /FORMAT HARD DISK? (Y-N)/ FCB 4 MSG2 FCC /FORMATTING DRIVE/ FCB 4 ABORT1 FCC /DRIVE OR CONTROLLER NOT READY/ FCB 4 ABORT2 FCC /FORMAT DRIVE COMMAND FAILED/ FCB 4 ABORT3 FCC /SECTOR LINK FAILURE/ FCB 4 ABORT5 FCC /SYSTEM INFO RECORD FAILURE/ FCB 4 OKFOR FCC /FORMAT DRIVE PASSED/ FCB $D,$A,0,0,0 FCC /---------1---------2---------3---------4/ FCC /---------5---------6---------7------/ FCB $D,$A,0,0,0,4 OKALL FCC /FORMATTING COMPLETE/ FCB $0D,$0A,0,0,0 FCC /TOTAL SECTORS = / FCB 4 *********************************** * CHECK TO SEE IF DRIVE IS READY CHKDRV LDAA #CRTDIA CONTROLLER DIAGNOSTIC STAA CMDOP LDAA #00 DRIVE STAA LUN JSR HCMMD BNE CHK9 ERROR LDAA #TSTDRV STAA CMDOP JSR HCMMD BNE CHK9 ERROR CHK5 CLRA NO ERROR RTS CHK9 RTS *********************************** * FORMAT DRIVE FORMAT LDAA #FMCMND STAA CMDOP CLR LUN CLR TRACK CLR SECTOR LDAA #INTER INTERLEAVE STAA BLKCNT CLR CTRFLD JMP HCMMD *************************************** * LINK SECTORS * CLEAR RAM SECTOR BUFFER DOSEC LDX #BUFF2 LDAB #00 256 BYTE BUFFER FMAT2 CLR 0,X INX DEC B BNE FMAT2 CLR SECTOR CLR TRACK LDAA #1 FIRST SECTOR STAA BUFF2+1 * WRITE LINKS TO DISK FMAT3 LDX #BUFF2 LDAA 0,X GET TRACK GET LINK FROM BUFFER STAA TRACK PUT IN DCB LDAA 1,X GET NEXT SECTOR STAA SECTOR PUT SECTOR IN DCB INCA NEXT SECTOR LINK CMPA #MAXSEC+1 END OF SECTOR BNE FMAT4 LDAA #'T JSR PUTCH PRINT ACTION SYMBOL LDX #BUFF2 ASSUME X DESTROYED INC 0,X NEXT TRACK LDAA #1 SECTOR 1 OF NEXT TRACK FMAT4 STAA 1,X PUT SECTOR IN BUFFER LDAA TRACK CMPA #MAXTRK+1 BEQ FMAT6 DONE LDAB SECTOR JSR HWRITE WRITE SECTOR BNE FMAT9 BR IF ERROR BRA FMAT3 FMAT6 CLRA SHOW NO ERROR FMAT9 RTS ******************************************** * SET UP SYSTEM INFO RECORD * CLEAR LAST LINK IN SYSTEM DOSIR LDX #BUFF2 CLR 0,X CLR 1,X LDAA #00 TRACK 0 LDAB #SYS JSR HWRITE WRITE SECTOR BNE DOSIR7 * CLEAR LAST LINK ON DISK LDX #BUFF2 LDAA #MAXTRK LDAB #MAXSEC JSR HWRITE BNE DOSIR7 * TRANSFER SYSTEM DATE TO IMAGE LDAA SDATE MONTH STAA DATE LDAA SDATE+1 DAY STAA DATE+1 LDAA SDATE+2 YEAR STAA DATE+2 * READ IN SIR LDAA #00 TRACK 0 LDAB #03 SECTOR 0 LDX #BUFF2 JSR HREAD BNE DOSIR7 LDX #BUFF2 STX XTEMP1 LDX #IMAGE STX XTEMP2 LDAB #40 NUMBER OF BYTES * COPY SIR IMAGE TO BUFFER DOSIR4 LDAA 0,X INX STX XTEMP2 LDX XTEMP1 STAA 0,X INX STX XTEMP1 LDX XTEMP2 DECB BNE DOSIR4 * WRITE SIR TO DISK LDAA #00 TRACK 0 LDAB #03 SECTOR 3 LDX #BUFF2 JSR HWRITE WRITE SECTOR BNE DOSIR7 ERROR? DOSIR7 RTS IMAGE FCB 0,0,0,0,0,0,0,0 FCB 0,0,0,0,0,0,0,0 VOLNAM FCC /HARDDISK / 11 BYTES VOLNUM FDB $0003 VOLUME NUMBER FSTAVL FCB $00,SYS+1 FIRST DATA BYTE LSTAVL FCB MAXTRK,MAXSEC LAST TRACK & SECTOR TOTSEC FDB TOTAL DATE FCB 06,06,82 FCB MAXTRK,MAXSEC LAST TRACK & SECTOR LIB HARD-IO END START