mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 08:54:17 +00:00
Upload
Digital Research
This commit is contained in:
158
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/xutils/format.s
Normal file
158
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/xutils/format.s
Normal file
@@ -0,0 +1,158 @@
|
||||
*********************************************************
|
||||
* *
|
||||
* Disk Formatting Program for CP/M-68K (tm) *
|
||||
* *
|
||||
* Copyright Digital Research 1982 *
|
||||
* *
|
||||
*********************************************************
|
||||
*
|
||||
*
|
||||
*
|
||||
prntstr = 9
|
||||
readbuf = 10
|
||||
*
|
||||
seldsk = 9
|
||||
settrk = 10
|
||||
setsec = 11
|
||||
setdma = 12
|
||||
write = 14
|
||||
sectran = 16
|
||||
flush = 21
|
||||
format = 63
|
||||
*
|
||||
.text
|
||||
*
|
||||
start: link a6,#0
|
||||
move.l 8(a6),a0
|
||||
add #$81,a0
|
||||
scan: cmpi.b #$20,(a0)+
|
||||
beq scan
|
||||
cmpi.b #$61,-(a0)
|
||||
blt upper
|
||||
sub #$20,(a0)
|
||||
upper: cmpi.b #$41,(a0)
|
||||
blt erxit
|
||||
cmpi.b #$50,(a0)
|
||||
bgt erxit
|
||||
query: move.b (a0),d0
|
||||
move.b d0,msgdskx
|
||||
ext.w d0
|
||||
sub.w #$41,d0
|
||||
move.w d0,dsk
|
||||
move.w #prntstr,d0
|
||||
move.l #msgdsk,d1
|
||||
trap #2
|
||||
move.w #readbuf,d0
|
||||
move.l #buf,d1
|
||||
trap #2
|
||||
move.b buf+2,d0
|
||||
cmpi.b #$59,d0
|
||||
beq doit
|
||||
cmpi.b #$79,d0
|
||||
bne exit
|
||||
*
|
||||
doit: clr.l d0
|
||||
clr.l d1
|
||||
*
|
||||
* Select the disk to format
|
||||
*
|
||||
move.w #seldsk,d0
|
||||
move.w dsk,d1
|
||||
clr.b d2
|
||||
trap #3
|
||||
tst.l d0
|
||||
beq selerx
|
||||
move.l d0,a0
|
||||
move.l (a0),xlt
|
||||
move.l 14(a0),a0
|
||||
move.w (a0),spt
|
||||
move.w 8(a0),drm
|
||||
move.w 14(a0),trk
|
||||
clr.w sect
|
||||
clr.w count
|
||||
*
|
||||
* Call the format function
|
||||
*
|
||||
move.w #format,d0
|
||||
move.w dsk,d1
|
||||
trap #3
|
||||
tst.w d0
|
||||
bne fmterx
|
||||
lea buf,a0
|
||||
move.l #$e5e5e5e5,d0
|
||||
move.w #31,d1
|
||||
bloop: move.l d0,(a0)+
|
||||
dbf d1,bloop
|
||||
move.w #setdma,d0
|
||||
move.l #buf,d1
|
||||
trap #3
|
||||
*
|
||||
dloop: move.w count,d0
|
||||
cmp.w drm,d0
|
||||
bgt exit
|
||||
move.w sect,d1
|
||||
cmp.w spt,d1
|
||||
blt sok
|
||||
clr.w sect
|
||||
add.w #1,trk
|
||||
sok: move.w #settrk,d0
|
||||
move.w trk,d1
|
||||
trap #3
|
||||
move.w #sectran,d0
|
||||
move.w sect,d1
|
||||
move.l xlt,d2
|
||||
trap #3
|
||||
move.w d0,d1
|
||||
move.w #setsec,d0
|
||||
trap #3
|
||||
move.w #write,d0
|
||||
clr.w d1
|
||||
trap #3
|
||||
tst.w d0
|
||||
bne wrterx
|
||||
add #1,sect
|
||||
add #1,count
|
||||
bra dloop
|
||||
*
|
||||
exit: move.w #flush,d0
|
||||
trap #3
|
||||
unlk a6
|
||||
rts
|
||||
*
|
||||
erxit: move.l #erstr,d1
|
||||
erx: move.w #prntstr,d0
|
||||
trap #2
|
||||
bra exit
|
||||
*
|
||||
fmterx: move.l #fmtstr,d1
|
||||
bra erx
|
||||
selerx: move.l #selstr,d1
|
||||
bra erx
|
||||
wrterx: move.l #wrtstr,d1
|
||||
bra erx
|
||||
*
|
||||
.data
|
||||
msgdsk: .dc.b 'Do you really want to format disk '
|
||||
msgdskx:.dc.b 'x ? $'
|
||||
*
|
||||
.even
|
||||
buf: .dc.b 126,0
|
||||
.ds.b 126
|
||||
*
|
||||
xlt: .ds.l 1
|
||||
spt: .ds.w 1
|
||||
drm: .ds.w 1
|
||||
sect: .ds.w 1
|
||||
trk: .ds.w 1
|
||||
dsk: .ds.w 1
|
||||
count: .ds.w 1
|
||||
*
|
||||
fmtstr: .dc.b 'Formatting Error',13,10,'$'
|
||||
erstr: .dc.b 'Error',13,10,'$'
|
||||
selstr: .dc.b 'Select Error',13,10,'$'
|
||||
wrtstr: .dc.b 'Write Error',13,10,'$'
|
||||
*
|
||||
copyrt: .dc.b 'CP/M-68K(tm), Version 1.1, Copyright 1983, Digital Research'
|
||||
serial: .dc.b 'XXXX-0000-654321'
|
||||
*
|
||||
.end
|
||||
Reference in New Issue
Block a user