' ' 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