4 ---------------------------------------------- , F4080 : Combined 40/80 track formatter 4 ---------------------------------------------- (" param 12, sectab 39, cat 511 2osword=&FFF1 < 7 F'begin : get drive P7initsec(0) : create sectab for track 0 Z,format(0) : format track 0 d T%=20 39 n+ initsec(T%) : create sectab x$ format(T%) : format   T%=40 78 2 ) initsec(T% 2) : create sectab $ format(T%) : format  .createcat : set up catalogue -writecat : write catalogue ' 6,22);133;"Formatting complete"   begin  whichdrive  ans$="Y" ans$="y"  insert  " ,createcat 6 I%=0 511 @+ cat?I%=0 : initialise J T/$(cat+8)="dummy $" : dummy filename ^7cat?&10 = 0 : remove terminating &0D h/cat?&105 = 8 : num of files*8 r5cat?&106 = 3 : sectors on disk=&320 |cat?&107 = &20 5cat?&10D = 198 : dummy is 198 sectors 5cat?&10F = 2 : starting st sector 2   format(track%) ¶m?0 = drive% : drive -param!1 = sectab : sector table 2param?5 = &05 : num of parameters -param?6 = &63 : command code /param?7 = track% : physical track %param?8 = 21 : gap3 7param?9 = &2A : 10 sectors x 256 bytes %param?10 = 0 : gap5 %param?11 = 16 : gap1  A%=&7F  X%=param &Y%=X% 256 0 osword :" 12,12);130;"track ";track% D param?12=0: N5 0,23);13;"format: bad result = &";~param?12: X b l head v 6 0,2);141;131;"COMBINED 40/80 TRACK FORMATTER" 6 0,3);141;131;"COMBINED 40/80 TRACK FORMATTER"   initsec(logtrack%)  I%=0 9  sectab?(I%*4+0)=logtrack%  sectab?(I%*4+1)=0  sectab?(I%*4+2)=I%  sectab?(I%*4+3)=1     insert  head / 0,5);134;"insert disk in drive ";drive%  * 0,7);134;"press SPACE when ready"; * 4 (100)=32 > head H R \whichdrive f head p z 0,5);38," ") 3 0,5);134;"enter drive to format (0-3) >";  " " drive%  drive%>-1 drive%<4  head + 0,5);134;"formatting drive ";drive%   0,7);38," ") * 0,7);134;"are you sure (Y/N) >";  " " ans$  ans$=ans$,1) / ans$="Y" ans$="y" ans$="N" ans$="n"   writecat ¶m?0 = drive% : drive /param!1 = cat : catalogue data $2param?5 = &03 : num of parameters .-param?6 = &4B : command code 8.param?7 = 0 : logical track B/param?8 = 0 : logical sector L6param?9 = &22 : 2 sectors x 256 bytes V A%=&7F ` X%=param jY%=X% 256 t osword ~ param?10=0: ; tab(0,23);133;"writecat: bad result = &";~param?10: