home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol007
/
v2format.asm
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
4KB
|
258 lines
;
; 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