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.›