PROCEDURE dum$convert_cts_to_dau, convert_cts_to_dau, concts (
  cylinder, c: integer 0..886 = 799
  track, t: integer 0..40 = 9
  sector, s: integer 0..47 = 6
  device_type, dt: integer 834..9853 = 895
  output, o: file = $output
  status)

" This procedure converts a cylinder/track/sector into a dau address.

  IF $value(device_type) = 834 THEN
    daus_per_cylinder = 10
    "  daus_per_track =         1
    sectors_per_track = 32
    tracks_per_cylinder = 10
    cylinders_per_device = 817
    sectors_per_dau = 32

  ELSEIF $value(device_type) = 836 THEN
    daus_per_cylinder = 35
    "  daus_per_track =         1.46
    sectors_per_track = 47
    tracks_per_cylinder = 24
    cylinders_per_device = 701
    sectors_per_dau = 32

  ELSEIF $value(device_type) = 844 THEN
    daus_per_cylinder = 44
    "  daus_per_track =         2.4
    sectors_per_track = 24
    tracks_per_cylinder = 19
    cylinders_per_device = 823
    sectors_per_dau = 10

  ELSEIF $value(device_type) = 885 THEN
    daus_per_cylinder = 160
    "  daus_per_track =         4
    sectors_per_track = 32
    tracks_per_cylinder = 40
    cylinders_per_device = 843
    sectors_per_dau = 8

  ELSEIF $value(device_type) = 887 THEN
    daus_per_cylinder = 38
    "  daus_per_track =         9.5
    sectors_per_track = 38
    tracks_per_cylinder = 4
    cylinders_per_device = 884
    sectors_per_dau = 4

  ELSEIF $value(device_type) = 895 THEN
    daus_per_cylinder = 37
    "  daus_per_track =         2.5
    sectors_per_track = 10
    tracks_per_cylinder = 15
    cylinders_per_device = 886
    sectors_per_dau = 4

  ELSEIF $value(device_type) = 9836 THEN
    daus_per_cylinder = 36
    "  daus_per_track =         1.5
    sectors_per_track = 12
    tracks_per_cylinder = 24
    cylinders_per_device = 703
    sectors_per_dau = 8

  ELSEIF $value(device_type) = 9853 THEN
    daus_per_cylinder = 49
    "  daus_per_track =         2.63
    sectors_per_track = 21
    tracks_per_cylinder = 19
    cylinders_per_device = 1412
    sectors_per_dau = 8

  ELSE
    EXIT_PROC WITH $status(false, 'xx', 0, ' unsupported device type: '//$strrep($value(device_type)))
  IFEND

  cyl = $value(cylinder)
  track = $value(track)
  sector = $value(sector)

  IF cyl > cylinders_per_device THEN
    EXIT_PROC WITH $status(false, 'xx', 0, ' cylinder > # of cylinders the device supports')
  ELSEIF track > tracks_per_cylinder THEN
    EXIT_PROC WITH $status(false, 'xx', 0, ' track > # of tracks/cylinder the device supports')
  ELSEIF sector > sectors_per_track THEN
    EXIT_PROC WITH $status(false, 'xx', 0, ' sector > # of sectors/track the device supports')
  IFEND

  sectors_per_cylinder =(daus_per_cylinder)* (sectors_per_dau)
  total_sector = sector + (track * sectors_per_track) + (cyl * sectors_per_cylinder)
  dau = total_sector / sectors_per_dau

  putl (' C'//..
$strrep(cyl)//' T'//$strrep(track)//' S'//$strrep(sector)//' on an '//$strrep($value(device_type))//..
' maps to dau address '//$strrep(dau)) o=$fname($strrep($value(output))//'.$eoi')

PROCEND dum$convert_cts_to_dau
