home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 451-475 / apd457 / q4mat / q4matv1_00.asc < prev    next >
Text File  |  1992-03-01  |  3KB  |  156 lines

  1. '
  2. '                                 Q4mat V1.00
  3. '                                ------------- 
  4. '
  5. '             written in AMOS V1.31 by Volker Stepprath 26/10/92 
  6. '
  7. '                       press left AMIGA+A to use Q4mat
  8. '
  9. '                      Q4mat V1.00 formats track 0 & 40 !
  10. '                  This is enough to make new empty DOS disk ! 
  11. '                        ( AND THAT IN AMOS !?! WOW ! )
  12. '
  13. N$=Upper$(Command Line$)
  14. '
  15. Global HANDLE
  16. '
  17. XOPEN
  18. '
  19. T$=Chr$($9B)+"32;43m"+"Q4mat V1.00 26/10/92 by Volker Stepprath"
  20. T$=T$+Chr$($9B)+"0m"+Chr$(10)
  21. '
  22. If Len(N$)>0 and Asc(N$)<>63
  23.   DISK$=N$
  24.   N$=N$-"DF"
  25.   UNIT=Val(N$)
  26.   T$=T$+"Insert DOS disk to be formatted in drive "
  27.   T$=T$+Chr$($9B)+"32;40m"+DISK$+Chr$($9B)+"0m !"+Chr$(10)
  28.   T$=T$+"Press left mousebutton when ready:"
  29.   XWRITE[T$]
  30.   Repeat : Until Not Btst(6,$BFE001)
  31.   XWRITE[Chr$(10)]
  32.   If Exist(DISK$)
  33.     _Q4MAT[UNIT]
  34.   Else 
  35.     XWRITE["No DOS disk in drive !"+Chr$(10)]
  36.   End If 
  37. Else 
  38.   T$=T$+"Usage: Q4mat [DEVICE]"+Chr$(10)
  39.   XWRITE[T$]
  40. End If 
  41. '
  42. XCLOSE
  43. '
  44. '**** Track 0 & 40 formatieren ****
  45. Procedure _Q4MAT[UNIT]
  46.   '
  47.   Reserve As Chip Data 2,11264
  48.   '
  49.   '**** Variablen & Adressen definieren **** 
  50.   DISKREP$=Space$(40)+Chr$(0)
  51.   DEVNAME$="trackdisk.device"+Chr$(0)
  52.   IOREQ$=Space$(80)+Chr$(0)
  53.   DISKREP=Varptr(DISKREP$)
  54.   IOREQADR=Varptr(IOREQ$)
  55.   '
  56.   '**** Eigene Taskadresse suchen **** 
  57.   Areg(0)=0
  58.   Areg(1)=0
  59.   Dreg(0)=0
  60.   Dreg(1)=0
  61.   XFINDTASK=Execall(-294)
  62.   Loke DISKREP+$10,XFINDTASK
  63.   '
  64.   '**** Device öffnen **** 
  65.   Areg(0)=Varptr(DEVNAME$)
  66.   Areg(1)=IOREQADR
  67.   Dreg(0)=UNIT
  68.   Dreg(1)=0
  69.   XOPENDEVICE=Execall(-444)
  70.   '
  71.   '**** Befehl aufrufen **** 
  72.   Loke IOREQADR+14,DISKREP
  73.   Loke IOREQADR+40,Start(2)
  74.   Loke IOREQADR+36,11264
  75.   '
  76.   '**** BootBlock **** 
  77.   For I=0 To 12
  78.     Read N
  79.     Loke Start(2)+I*4,N
  80.   Next I
  81.   TRACK=0
  82.   Gosub _QFORMAT
  83.   '
  84.   '**** Root / BitMap **** 
  85.   Erase 2
  86.   Reserve As Chip Data 2,11264
  87.   Loke IOREQADR+40,Start(2)
  88.   N=Start(2)
  89.   For I=$204 To $2DF
  90.     Poke N+I,$FF
  91.   Next I
  92.   Doke N+2,$2
  93.   Poke N+15,$48
  94.   Loke N+20,$A661AEF3
  95.   Doke N+$13A,$1
  96.   Doke N+$13E,$371
  97.   Poke N+$1B0,$5
  98.   Poke N+$1B1,$45
  99.   Poke N+$1B2,$4D
  100.   Poke N+$1B3,$50
  101.   Poke N+$1B4,$54
  102.   Poke N+$1B5,$59
  103.   Poke N+$1FF,$1
  104.   Loke N+$200,$C000C037
  105.   Poke N+$272,$3F
  106.   Poke N+$2DC,$3F
  107.   Loke IOREQADR+44,$6E000
  108.   TRACK=40
  109.   Gosub _QFORMAT
  110.   Erase 2
  111.   '
  112.   '**** Motor ausschalten **** 
  113.   Doke IOREQADR+28,9
  114.   Loke IOREQADR+36,0
  115.   XDOIO=Execall(-456)
  116.   '
  117.   '**** Device schließen ****
  118.   XCLOSEDEVICE=Execall(-450)
  119.   '
  120.   Pop Proc
  121.   '
  122.   '**** Track formattieren ****
  123.   _QFORMAT:
  124.     Doke IOREQADR+28,11
  125.     Loke IOREQADR+44,TRACK*11264
  126.     XDOIO=Execall(-456)
  127.   Return 
  128. '
  129. '**** BootBlockDaten ****
  130. Data $444F5300,$C0200F19,$370,$43FA0018,$4EAEFFA0,$4A80670A
  131. Data $20402068,$167000,$4E7570FF,$60FA646F,$732E6C69,$62726172,$79000000
  132. End Proc
  133. '
  134. '**** Fensters/Datei öffnen **** 
  135. Procedure XOPEN
  136.   DATEI$="*"+Chr$(0)
  137.   Dreg(1)=Varptr(DATEI$)
  138.   Dreg(2)=1005
  139.   HANDLE=Doscall(-30)
  140. End Proc
  141. '
  142. '**** Text schreiben ****
  143. Procedure XWRITE[T$]
  144.   T$=T$+Chr$(0)
  145.   Dreg(1)=HANDLE
  146.   Dreg(2)=Varptr(T$)
  147.   Dreg(3)=Len(T$)
  148.   XWRITE=Doscall(-48)
  149. End Proc
  150. '
  151. '**** Fensters/Datei schließen ****
  152. Procedure XCLOSE
  153.   Dreg(1)=HANDLE
  154.   XCLOSE=Doscall(-36)
  155. End Proc
  156.