home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
451-475
/
apd457
/
q4mat
/
q4matv1_00.asc
< prev
next >
Wrap
Text File
|
1992-03-01
|
3KB
|
156 lines
'
' Q4mat V1.00
' -------------
'
' written in AMOS V1.31 by Volker Stepprath 26/10/92
'
' press left AMIGA+A to use Q4mat
'
' Q4mat V1.00 formats track 0 & 40 !
' This is enough to make new empty DOS disk !
' ( AND THAT IN AMOS !?! WOW ! )
'
N$=Upper$(Command Line$)
'
Global HANDLE
'
XOPEN
'
T$=Chr$($9B)+"32;43m"+"Q4mat V1.00 26/10/92 by Volker Stepprath"
T$=T$+Chr$($9B)+"0m"+Chr$(10)
'
If Len(N$)>0 and Asc(N$)<>63
DISK$=N$
N$=N$-"DF"
UNIT=Val(N$)
T$=T$+"Insert DOS disk to be formatted in drive "
T$=T$+Chr$($9B)+"32;40m"+DISK$+Chr$($9B)+"0m !"+Chr$(10)
T$=T$+"Press left mousebutton when ready:"
XWRITE[T$]
Repeat : Until Not Btst(6,$BFE001)
XWRITE[Chr$(10)]
If Exist(DISK$)
_Q4MAT[UNIT]
Else
XWRITE["No DOS disk in drive !"+Chr$(10)]
End If
Else
T$=T$+"Usage: Q4mat [DEVICE]"+Chr$(10)
XWRITE[T$]
End If
'
XCLOSE
'
'**** Track 0 & 40 formatieren ****
Procedure _Q4MAT[UNIT]
'
Reserve As Chip Data 2,11264
'
'**** Variablen & Adressen definieren ****
DISKREP$=Space$(40)+Chr$(0)
DEVNAME$="trackdisk.device"+Chr$(0)
IOREQ$=Space$(80)+Chr$(0)
DISKREP=Varptr(DISKREP$)
IOREQADR=Varptr(IOREQ$)
'
'**** Eigene Taskadresse suchen ****
Areg(0)=0
Areg(1)=0
Dreg(0)=0
Dreg(1)=0
XFINDTASK=Execall(-294)
Loke DISKREP+$10,XFINDTASK
'
'**** Device öffnen ****
Areg(0)=Varptr(DEVNAME$)
Areg(1)=IOREQADR
Dreg(0)=UNIT
Dreg(1)=0
XOPENDEVICE=Execall(-444)
'
'**** Befehl aufrufen ****
Loke IOREQADR+14,DISKREP
Loke IOREQADR+40,Start(2)
Loke IOREQADR+36,11264
'
'**** BootBlock ****
For I=0 To 12
Read N
Loke Start(2)+I*4,N
Next I
TRACK=0
Gosub _QFORMAT
'
'**** Root / BitMap ****
Erase 2
Reserve As Chip Data 2,11264
Loke IOREQADR+40,Start(2)
N=Start(2)
For I=$204 To $2DF
Poke N+I,$FF
Next I
Doke N+2,$2
Poke N+15,$48
Loke N+20,$A661AEF3
Doke N+$13A,$1
Doke N+$13E,$371
Poke N+$1B0,$5
Poke N+$1B1,$45
Poke N+$1B2,$4D
Poke N+$1B3,$50
Poke N+$1B4,$54
Poke N+$1B5,$59
Poke N+$1FF,$1
Loke N+$200,$C000C037
Poke N+$272,$3F
Poke N+$2DC,$3F
Loke IOREQADR+44,$6E000
TRACK=40
Gosub _QFORMAT
Erase 2
'
'**** Motor ausschalten ****
Doke IOREQADR+28,9
Loke IOREQADR+36,0
XDOIO=Execall(-456)
'
'**** Device schließen ****
XCLOSEDEVICE=Execall(-450)
'
Pop Proc
'
'**** Track formattieren ****
_QFORMAT:
Doke IOREQADR+28,11
Loke IOREQADR+44,TRACK*11264
XDOIO=Execall(-456)
Return
'
'**** BootBlockDaten ****
Data $444F5300,$C0200F19,$370,$43FA0018,$4EAEFFA0,$4A80670A
Data $20402068,$167000,$4E7570FF,$60FA646F,$732E6C69,$62726172,$79000000
End Proc
'
'**** Fensters/Datei öffnen ****
Procedure XOPEN
DATEI$="*"+Chr$(0)
Dreg(1)=Varptr(DATEI$)
Dreg(2)=1005
HANDLE=Doscall(-30)
End Proc
'
'**** Text schreiben ****
Procedure XWRITE[T$]
T$=T$+Chr$(0)
Dreg(1)=HANDLE
Dreg(2)=Varptr(T$)
Dreg(3)=Len(T$)
XWRITE=Doscall(-48)
End Proc
'
'**** Fensters/Datei schließen ****
Procedure XCLOSE
Dreg(1)=HANDLE
XCLOSE=Doscall(-36)
End Proc