1000 REMark *********************************************
1005 REMark         A handy (?) formatting utility
1010 REMark                    written
1015 REMark                      and
1020 REMark          Pointerised by Norman Dunbar
1025 REMark *********************************************
1030 :
1035 :
1040 REMark $$asmb=flp1_format_bin,4,82
1045 :
1050 initialise
1055 REPeat main_loop
1060   action = MCALL(#menu; \0)
1065   SELect ON action
1070     =  0: EXIT main_loop                       : REMark ESC
1075     = -4: do_format (dev$), (name$), (single%) : REMark OK
1080     = -5: dev$ = iw_input$(3, dev$)            : REMark DEVICE
1085           iw_print 3, dev$
1090     = -6: single% = NOT(single%)               : REMark SIDES
1095           iw_print 4, sided$(single%)
1100     = -7: do_tracks                            : REMark TRACKS
1105     = -8: do_reset                             : REMark RESET
1110     = -9: name$ = iw_input$(6, name$)          : REMark NAME
1115           iw_print 6, name$
1120   END SELect 
1125   SELect ON action
1130     = -9 TO -4: action = MSTAT%(#menu, action TO available%)
1135   END SELect 
1140 END REPeat main_loop
1145 CLOSE #3
1150 FLP_TRACK 80
1155 :
1160 DEFine PROCedure initialise
1165 :
1170   OPEN #3,'con_'
1175   MSETUP #3, 'format',40, 20
1180   menu = MWDEF(#3)
1185   :
1190   available% = 0
1195   unavailable% = -1
1200   selected% = 1
1205 :
1210   DIM sided$(1, 6)
1215   RESTORE 1225
1220   READ sided$(0), sided$(1)
1225   DATA 'Double', 'Single'
1230 :
1235   ignore = MSTAT%(#menu, -10 TO unavailable%): REMark UP ARROW
1240   ignore = MSTAT%(#menu, -11 TO unavailable%): REMark DOWN ARROW
1245 :
1250   MDRAW #menu
1255   do_reset
1260 END DEFine initialise
1265 :
1270 :
1275 DEFine PROCedure do_reset
1280   dev$ = 'flp1_'
1285   DIM name$(10): name$ = ''
1290   single% = 0
1295   tracks% = 80
1300 :
1305   iw_print 3, dev$
1310   iw_print 4, sided$(single%)
1315   iw_print 5, tracks%
1320   iw_print 6, name$
1325   iw_print 8, '          Copyright N. Dunbar'
1330 END DEFine initialise
1335 :
1340 :
1345 DEFine PROCedure iw_print(iw%, t$)
1350   MWINDOW #3, iw% ! \0
1355   INK #3, 0
1360   IF iw% = 6: CSIZE #3, 2, 1: END IF 
1365   PRINT #3, t$;
1370   CLS #3, 4
1375   IF iw% = 6: CSIZE #3, 0, 0: END IF 
1380 END DEFine iw_print
1385 :
1390 :
1395 DEFine FuNction iw_input$(iw%, t$)
1400   LOCal x$
1405   MWINDOW #3, iw% ! \0
1410   INK #3, 0
1415   IF iw% = 6: CSIZE #3, 2, 1: END IF 
1420   x$ = t$
1425   MINPUT #3, x$ \0
1430   IF iw% = 6: CSIZE #3, 0, 0: END IF 
1435   RETurn x$
1440 END DEFine iw_input$
1445 :
1450 :
1455 DEFine PROCedure burble
1460   BEEP 1200, 5
1465 END DEFine burble
1470 :
1475 :
1480 DEFine PROCedure bip
1485   BEEP 60,2
1490 END DEFine bip
1495 :
1500 :
1505 DEFine PROCedure do_format(d$, n$, s%)
1510   LOCal name$(16)
1515   :
1520   name$ = d$ & (n$ & FILL$(' ', 10 - LEN(n$)))
1525   IF s% THEN name$ = name$ & '*': END IF 
1530   MWINDOW #menu, 8 ! \0
1535   INK #3, 2
1540   PRINT #3, '<' & name$; '> has ';: CLS #3,4
1545   FLP_TRACK tracks%
1550   FORMAT #3, name$
1555   burble
1560 END DEFine do_format
1565 :
1570 :
1575 DEFine PROCedure do_tracks
1580   LOCal ignore, loop, key%, x
1585   :
1590   FOR x = -2, -9, -6, -5
1595     ignore = MSTAT%(#menu, x TO unavailable%)
1600   END FOR x
1605   FOR x = -11 TO -10
1610     ignore = MSTAT%(#menu, x TO available%)
1615   END FOR x
1620   MLIDRAW #menu
1625   :
1630   REPeat loop
1635     ignore = MCALL(#menu ;\0)
1640     SELect ON ignore
1645       =  -4, -7: EXIT loop      : REMark OK or TRACK
1650       =  -8: tracks% = 80       : REMark RESET
1655       = -10: adjust_tracks(+1)  : REMark CTRL UP
1660       = -11: adjust_tracks(-1)  : REMark CTRL DOWN
1665     END SELect 
1670     iw_print 5, tracks%
1675     SELect ON ignore
1680       = -4, -7, -8, -10, -11: ignore= MSTAT%(#menu, ignore TO available%)
1685     END SELect 
1690  END REPeat loop
1695  FOR x = -11 TO -10
1700     ignore = MSTAT%(#menu, x TO unavailable%)
1705  END FOR x
1710  FOR x = -2, -9, -6, -5, -4
1715    ignore = MSTAT%(#menu, x TO available%)
1720  END FOR x
1725  MLIDRAW #menu
1730 END DEFine do_tracks
1735 :
1740 :
1745 DEFine PROCedure adjust_tracks(x)
1750   LOCal key, adjust%
1755   :
1760   bip
1765   key = MKEY%(#menu)
1770   SELect ON key
1775     = 1, 217, 218: adjust% = 1 * x: REMark HIT/CTRL UP/CTRL DOWN
1780     = 2: adjust% = 10 * x         : REMark DO
1785     = REMAINDER : adjust% = 1 * x : REMark All the rest, just in case
1790   END SELect 
1795   tracks% = tracks% + adjust%
1800   IF tracks% > 80 THEN tracks% = 80: END IF 
1805   IF tracks% < 1 THEN tracks% = 1: END IF 
1810 END DEFine adjust_tracks
