home *** CD-ROM | disk | FTP | other *** search
- ;
- ; VERSAFLOPPY II DISK FORMATTER
- ;
- ; Formats a New Disk with IBM Soft-Sectored Format.
- ;
- ; R. W. Hart - July 1980
- ;
- ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- ; XX CAUTION!!! - This Program Will Destroy the XX
- ; XX Contents of a Disk Unless it is Write- XX
- ; XX Protected. When Calling the Program by XX
- ; XX Mistake, any Response other than RETURN to XX
- ; XX the Question "When Ready, Respond with XX
- ; XX RETURN.." Will Abort the Program Without XX
- ; XX Writing to the Disk. XX
- ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- ;
- .PABS
- .LOC 0100H
- ;
- ; DEFINITIONS
- ;
- SRAM = 0000H ;Start of RAM
- BDOS = 0005H ;Operating System Entry
- UNIT = SRAM+42H ;Unit Byte
- SCTR = SRAM+43H ;Sector Pointer
- TRK = SRAM+44H ;Track Pointer
- BIOS = 0F000H ;Versafloppy BIOS Address
- HME = BIOS+18H ;Home Entry to BIOS
- FMATE = BIOS+33H ;Format Entry to BIOS
- NTRKS = BIOS+40H ;Contains # of Disk TRACKS
- CR = 0DH ;Carriage-Return
- LF = 0AH ;Line-Feed
- VT = 0BH ;Clear SCREEN
- FILLER = 0000H
- ;
- ;
- LHLD UNIT
- SHLD SAVUNIT
- FORMAT: MVI C,9
- LXI D,GMSG
- CALL BDOS ;Output Greeting
- DRIVE: MVI C,9
- LXI D,MSG5
- CALL BDOS
- MVI C,1
- CALL BDOS
- ANI 0FH
- CPI 04H
- JNC DRIVE
- STA UNIT
- SIZE: MVI C,9
- LXI D,MSG1
- CALL BDOS
- MVI C,1
- CALL BDOS
- ANI 0FH
- CPI 02H
- JNC SIZE
- CPI 00H
- JZ RESET7
- JMP SET7
- DEN: MVI C,9
- LXI D,MSG2
- CALL BDOS
- MVI C,1
- CALL BDOS
- ANI 0FH
- CPI 02H
- JNC DEN
- CPI 00H
- JZ RESET6
- JMP SET6
- DSIZE: MVI C,9
- LXI D,MSG3
- CALL BDOS
- MVI C,1
- CALL BDOS
- ANI 0FH
- CPI 02H
- JNC DSIZE
- CPI 00H
- JZ RESET5
- JMP SET5
- DSIDE: MVI C,9
- LXI D,MSG4
- CALL BDOS
- MVI C,1
- CALL BDOS
- ANI 0FH
- CPI 02H
- JNC DSIDE
- CPI 00H
- JZ RESET4
- JMP SET4
- GO: MVI C,9
- LXI D,MMSG
- CALL BDOS
- MVI C,1
- CALL BDOS
- CPI CR
- RNZ
- XRA A
- STA TRK
- INR A
- STA SCTR
- CALL HME
- FORMT1: CALL FMATE ;Format this Track
- JNZ ERROR
- LDA TRK
- INR A
- STA TRK
- MOV B,A
- LDA NTRKS
- CMP B
- JNZ FORMT1
- MVI C,9
- LXI D,MSG6
- CALL BDOS
- MVI C,1
- CALL BDOS
- CPI 'Y'
- JZ GO
- MVI C,9
- LXI D,FMSG
- CALL BDOS
- PUSH H
- LHLD SAVUNIT
- SHLD UNIT
- POP H
- JMP 00H
- ;
- RESET7: PUSH H
- LXI H,UNIT
- RES 7,M
- POP H
- JMP DEN
- RESET6: PUSH H
- LXI H,UNIT
- RES 6,M
- POP H
- JMP DSIZE
- RESET5: PUSH H
- LXI H,UNIT
- RES 5,M
- POP H
- JMP DSIDE
- RESET4: PUSH H
- LXI H,UNIT
- RES 4,M
- POP H
- JMP GO
- SET7: PUSH H
- LXI H,UNIT
- SET 7,M
- POP H
- JMP DEN
- SET6: PUSH H
- LXI H,UNIT
- SET 6,M
- POP H
- JMP DSIZE
- SET5: PUSH H
- LXI H,UNIT
- SET 5,M
- POP H
- JMP DSIDE
- SET4: PUSH H
- LXI H,UNIT
- SET 4,M
- POP H
- JMP GO
- ;
- ERROR: MVI C,9
- LXI D,EMSG
- CALL BDOS
- PUSH H
- LHLD SAVUNIT
- SHLD UNIT
- POP H
- JMP 00H
- ;
- MSG1: .BYTE VT,LF,CR
- .ASCII ' SECTOR SIZE'
- .BYTE LF,CR
- .ASCII ' -----------'
- .BYTE LF,CR,LF,CR
- .ASCII '128 BYTES = 0 '
- .BYTE LF,CR
- .ASCII '256 BYTES = 1'
- .BYTE LF,CR,'$'
- MSG2: .BYTE VT,LF,CR
- .ASCII ' DENSITY'
- .BYTE LF,CR
- .ASCII ' -------'
- .BYTE LF,CR,LF,CR
- .ASCII 'SINGLE = 0 '
- .BYTE LF,CR
- .ASCII 'DOUBLE = 1'
- .BYTE LF,CR,'$'
- MSG3: .BYTE VT,LF,CR
- .ASCII 'DRIVE SIZE '
- .BYTE LF,CR
- .ASCII '----------'
- .BYTE LF,CR,LF,CR
- .ASCII ' FULL = 0'
- .BYTE LF,CR
- .ASCII ' MINI = 1'
- .BYTE LF,CR,'$'
- MSG4: .BYTE VT,LF,CR
- .ASCII ' # OF SIDES'
- .BYTE LF,CR
- .ASCII ' ----------'
- .BYTE LF,CR,LF,CR
- .ASCII 'SINGLE SIDED = 0'
- .BYTE LF,CR
- .ASCII 'DOUBLE SIDED = 1'
- .BYTE LF,CR,'$'
- MSG5: .BYTE LF,CR
- .ASCII ' DRIVE'
- .BYTE LF,CR
- .ASCII ' -----'
- .BYTE LF,CR,LF,CR
- .ASCII 'DRIVE A = 0'
- .BYTE LF,CR
- .ASCII 'DRIVE B = 1'
- .BYTE LF,CR
- .ASCII 'DRIVE C = 2'
- .BYTE LF,CR
- .ASCII 'DRIVE D = 3'
- .BYTE LF,CR,'$'
- MSG6: .BYTE VT,LF,CR
- .ASCII 'Do You Wish To Format Another Disk ?'
- .BYTE LF,CR,'$'
- GMSG: .BYTE VT,LF,CR
- .ASCII 'WA3MEZ VERSAFLOPPY II DISK FORMATER - '
- .ASCII 'VERSION 1.00'
- .BYTE LF,CR,LF,CR,'$'
- MMSG: .BYTE VT,LF,CR
- .ASCII 'Mount Disk to be Formatted...'
- .BYTE LF,CR,LF,CR
- .ASCII 'When Ready, Respond With RETURN...'
- .BYTE LF,CR,'$'
- ;
- EMSG: .BYTE VT,LF,CR
- .ASCII '*** DISK WRITE ERROR - PROGRAM ABORTED ***'
- .BYTE LF,CR,LF,CR,'$'
- ;
- FMSG: .BYTE VT,LF,CR
- .ASCII '*** FORMATTING COMPLETE - REMOVE DISK ***'
- .BYTE LF,CR,LF,CR,'$'
- ;
- ;
-
- SAVUNIT: .WORD FILLER
- ;
- .END
-