0100     *=  $4000›0110 ;›0120 ;  SPARTA-DOS 3.2 PROGRAM TO›0130 ;  PHYSICALLY FORMAT A HARD›0140 ;  DRIVE.›0150 ;›0160 ;  BILL DYCK, JANUARY 1987›0170 ;›0180 DRIVE_INPUT = $D1E2›0190 DRIVE_OUTPUT = $D1E2›0200 DATA_OUT = $D1E1›0210 DATA_IN = $D1E1›0220 IO  =   4›0230 CD  =   1›0240 ATTN =  $10›0250 BUSY =  $20›0260 ;›0270 START›0280     JSR GET_ATTENTION›0290 TRANSFER_TO_DRIVE›0300     LDX #$00›0310 TRANSFER_LOOP›0320     LDA FORMAT_DRIVE,X›0330     EOR #$FF›0340     STA DATA_OUT›0350 OUTPUT_OK?›0360     BIT DRIVE_INPUT›0370     BMI OUTPUT_OK?›0380     INX ›0390     CPX #$06›0400     BNE TRANSFER_LOOP›0410 FINISH›0420     JSR DROP_ATTENTION›0430     RTS ›0440 ;›0450 ;  ÓÕÐÐÏÒÔÉÎÇ ÓÕÂÒÏÕÔÉÎÅÓ›0460 ;›0470 GET_ATTENTION›0480     LDA #$01    ;CONTROLLER ID›0490     EOR #$FF    ;INVERT FOR SCSI›0500     STA DATA_OUT ;PUT ONTO DATA BUS›0510 WAIT_FOR_RESPONSE›0520     LDA DRIVE_INPUT ;LOAD DRIVE STATUS›0530     AND #IO     ;ISOLATE I/O BIT›0540     BEQ WAIT_FOR_RESPONSE ;IF 0, NOT READY›0550     LDA #ATTN   ;ATTENTION CODE›0560     STA DRIVE_OUTPUT ;PUT ON BUS›0570 GOT_ATTN?›0580     LDA DRIVE_INPUT ;LOAD BUS›0590     AND #BUSY   ;CHECK IF BUSY›0600     BNE GOT_ATTN? ;KEEP GOING UNTIL READY›0610 CLEAR_ATTN›0620     LDA #$00    ;TAKE ATTENTION OFF BUS›0630     STA DRIVE_OUTPUT›0640 WAIT_FOR_REQUEST›0650     BIT DRIVE_INPUT ;CHECK REQUEST LINE›0660     BMI WAIT_FOR_REQUEST›0670     RTS ›0680 DROP_ATTENTION›0690     LDA DATA_IN ;LOAD DATA BUS›0700 DESELECT›0710     BIT DRIVE_INPUT ;CHECK IF READY TO DE-ASSERT›0720     BMI DESELECT ;NOT YET›0730     LDX #$28    ;MAKE SURE CNTRLR GETS DE-SELECTED›0740 DESELECT_LOOP›0750     LDA DATA_IN ;READ DATA›0760     DEX         ;MIO RESPONDS WITH ACK›0770     BPL DESELECT_LOOP ;CNTLR DE-SELECTED›0780     RTS ›0790 ;›0800 ; ÐÒÏÇÒÁÍ ÄÁÔÁ›0810 ;›0820 FORMAT_DRIVE .BYTE 4,0,0,0,1,0›0830 ;                         ›0840 ; THIS NUMBER IS '0' FOR DRIVE 1›0850 ;                $20 FOR DRIVE 2›0860 ;                          ›0870 ; THIS NUMBER IS FOR AN INTER-›0880 ; LEAVE OF 1.›