_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

C2SEC.SRC

FILE INFORMATION

FILENAME(S): C2SEC.SRC

FILE TYPE(S): SEQ

FILE SIZE: 8.1K

FIRST SEEN: 2025-11-30 16:59:23

APPEARS ON: 1 disk(s)

FILE HASH

76ccd8272489b617234cd13ad458cae919015aff000724ccad7aae85814e3479

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
64HDPROJ C2SEC.SRC SEQ High Voltage Complete C64 Collection 17 1 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 42 50 55 54 22 43 32  53 45 43 2E 53 52 43 0D  |;BPUT"C2SEC.SRC.|
00000010: 3B 52 50 55 54 22 43 32  53 45 43 2E 53 52 43 0D  |;RPUT"C2SEC.SRC.|
00000020: 3B 0D 3B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |;.;+++++++++++++|
00000030: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000040: 2B 2B 2B 2B 0D 3B 2B 20  53 45 43 54 4F 52 2C 20  |++++.;+ SECTOR, |
00000050: 53 41 54 2C 20 41 4E 44  20 44 49 53 4B 20 41 44  |SAT, AND DISK AD|
00000060: 44 52 45 53 53 20 2B 0D  3B 2B 20 52 4F 55 54 49  |DRESS +.;+ ROUTI|
00000070: 4E 45 53 2E 20 20 20 20  20 20 20 20 20 20 20 20  |NES.            |
00000080: 20 20 20 20 20 20 20 20  20 2B 0D 3B 2B 20 45 4E  |         +.;+ EN|
00000090: 54 52 59 20 50 4F 49 4E  54 53 3A 20 20 20 20 20  |TRY POINTS:     |
000000A0: 20 20 20 20 20 20 20 20  20 20 20 20 2B 0D 3B 2B  |            +.;+|
000000B0: 2A 20 53 45 43 32 43 59  4C 44 43 42 20 2D 20 43  |* SEC2CYLDCB - C|
000000C0: 4F 4E 56 45 52 54 20 53  45 43 4E 55 4D 20 54 4F  |ONVERT SECNUM TO|
000000D0: 20 20 20 2B 0D 3B 2B 20  20 20 20 4D 53 42 53 45  |   +.;+    MSBSE|
000000E0: 43 2C 20 4C 53 42 2C 20  48 45 41 44 20 46 4F 52  |C, LSB, HEAD FOR|
000000F0: 4D 41 54 2E 20 20 2B 0D  3B 2B 2A 20 53 45 43 32  |MAT.  +.;+* SEC2|
00000100: 43 59 4C 44 43 42 31 20  2D 20 43 4F 4E 56 45 52  |CYLDCB1 - CONVER|
00000110: 54 20 43 59 4C 4D 53 42  20 41 4E 44 20 20 2B 0D  |T CYLMSB AND  +.|
00000120: 3B 2B 20 20 20 20 53 45  43 54 4F 52 20 4E 55 4D  |;+    SECTOR NUM|
00000130: 42 45 52 20 54 4F 20 4D  53 42 53 45 43 20 20 20  |BER TO MSBSEC   |
00000140: 20 2B 0D 3B 2B 20 20 20  20 46 4F 52 4D 41 54 20  | +.;+    FORMAT |
00000150: 57 49 54 48 20 4F 55 54  50 55 54 20 49 4E 20 20  |WITH OUTPUT IN  |
00000160: 20 20 20 20 2B 0D 3B 2B  20 20 20 20 43 59 4C 4D  |    +.;+    CYLM|
00000170: 53 42 2E 20 20 20 20 20  20 20 20 20 20 20 20 20  |SB.             |
00000180: 20 20 20 20 20 20 20 2B  0D 3B 2B 2A 20 53 45 43  |       +.;+* SEC|
00000190: 54 52 32 43 59 4C 49 4E  44 52 20 2D 20 43 4F 4E  |TR2CYLINDR - CON|
000001A0: 56 45 52 54 20 53 45 43  4E 55 4D 20 54 4F 20 20  |VERT SECNUM TO  |
000001B0: 20 2B 0D 3B 2B 20 20 20  20 43 59 4C 4D 53 42 2C  | +.;+    CYLMSB,|
000001C0: 20 43 59 4C 4C 53 42 2C  20 48 45 41 44 2C 20 20  | CYLLSB, HEAD,  |
000001D0: 20 20 20 20 2B 0D 3B 2B  20 20 20 20 53 45 43 54  |    +.;+    SECT|
000001E0: 4F 52 2E 20 20 20 20 20  20 20 20 20 20 20 20 20  |OR.             |
000001F0: 20 20 20 20 20 20 20 2B  0D 3B 2B 2A 20 53 41 54  |       +.;+* SAT|
00000200: 32 53 45 43 54 4F 52 20  20 2D 20 43 4F 4E 56 45  |2SECTOR  - CONVE|
00000210: 52 54 20 53 41 54 53 45  43 2C 20 20 20 20 20 2B  |RT SATSEC,     +|
00000220: 0D 3B 2B 20 20 20 20 53  41 54 42 59 54 2C 20 41  |.;+    SATBYT, A|
00000230: 4E 44 20 53 41 54 42 49  54 20 54 4F 20 41 20 20  |ND SATBIT TO A  |
00000240: 20 20 2B 0D 3B 2B 20 20  20 20 53 45 43 54 4F 52  |  +.;+    SECTOR|
00000250: 20 4E 55 4D 42 45 52 2E  20 20 20 20 20 20 20 20  | NUMBER.        |
00000260: 20 20 20 20 20 2B 0D 3B  2B 2A 20 53 45 43 54 4F  |     +.;+* SECTO|
00000270: 52 32 53 41 54 20 2D 20  43 4F 4E 56 45 52 54 20  |R2SAT - CONVERT |
00000280: 53 45 43 4E 55 4D 20 54  4F 20 20 20 2B 0D 3B 2B  |SECNUM TO   +.;+|
00000290: 20 20 20 20 53 41 54 20  45 4E 54 52 59 2E 20 20  |    SAT ENTRY.  |
000002A0: 49 4E 50 55 54 20 49 53  20 58 20 2D 20 20 20 2B  |INPUT IS X -   +|
000002B0: 0D 3B 2B 20 20 20 20 48  49 20 42 59 54 45 20 4F  |.;+    HI BYTE O|
000002C0: 46 20 53 45 43 4E 55 4D  2C 20 41 20 2D 20 4D 49  |F SECNUM, A - MI|
000002D0: 44 20 2B 0D 3B 2B 20 20  20 20 42 59 54 45 20 4F  |D +.;+    BYTE O|
000002E0: 46 20 53 45 43 4E 55 4D  2C 20 41 4E 44 20 59 20  |F SECNUM, AND Y |
000002F0: 2D 20 4C 4F 57 2B 0D 3B  2B 20 20 20 20 42 59 54  |- LOW+.;+    BYT|
00000300: 45 20 4F 46 20 53 45 43  4E 55 4D 2E 20 20 20 20  |E OF SECNUM.    |
00000310: 20 20 20 20 20 20 20 20  2B 0D 3B 2B 2A 20 43 59  |        +.;+* CY|
00000320: 4C 32 53 45 43 54 4F 52  44 43 42 20 2D 20 43 4F  |L2SECTORDCB - CO|
00000330: 4E 56 45 52 54 20 44 43  42 20 46 4F 52 4D 41 54  |NVERT DCB FORMAT|
00000340: 20 20 2B 0D 3B 2B 20 20  20 20 44 49 53 4B 20 41  |  +.;+    DISK A|
00000350: 44 44 52 45 53 53 20 54  4F 20 53 45 43 4E 55 4D  |DDRESS TO SECNUM|
00000360: 2E 20 20 20 20 2B 0D 3B  2B 20 20 20 20 49 4E 50  |.    +.;+    INP|
00000370: 55 54 3A 20 41 20 2D 20  44 52 49 56 45 2D 48 45  |UT: A - DRIVE-HE|
00000380: 41 44 20 20 20 20 20 20  2B 0D 3B 2B 20 20 20 20  |AD      +.;+    |
00000390: 20 20 20 20 20 20 20 58  20 2D 20 4D 53 42 20 43  |       X - MSB C|
000003A0: 59 4C 49 4E 44 45 52 20  20 20 20 2B 0D 3B 2B 20  |YLINDER    +.;+ |
000003B0: 20 20 20 20 20 20 20 20  20 20 59 20 2D 20 4C 53  |          Y - LS|
000003C0: 42 20 43 59 4C 49 4E 44  45 52 20 20 20 20 2B 0D  |B CYLINDER    +.|
000003D0: 3B 2B 2A 20 43 59 4C 49  4E 44 45 52 32 53 45 43  |;+* CYLINDER2SEC|
000003E0: 54 52 20 2D 20 43 4F 4E  56 45 52 54 20 48 45 41  |TR - CONVERT HEA|
000003F0: 44 2C 20 43 59 4C 4C 53  42 2B 0D 3B 2B 20 20 20  |D, CYLLSB+.;+   |
00000400: 20 43 59 4C 4D 53 42 2C  20 26 20 53 45 43 54 4F  | CYLMSB, & SECTO|
00000410: 52 20 54 4F 20 53 45 43  4E 55 4D 2E 2B 0D 3B 2B  |R TO SECNUM.+.;+|
00000420: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000430: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000440: 0D 3B 0D 3B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |.;.;++++++++++++|
00000450: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000460: 2B 2B 2B 2B 2B 0D 3B 2B  54 48 45 20 46 4F 4C 4C  |+++++.;+THE FOLL|
00000470: 4F 57 49 4E 47 20 41 52  45 41 53 20 41 52 45 20  |OWING AREAS ARE |
00000480: 55 53 45 44 20 42 59 2B  0D 3B 2B 20 54 48 45 53  |USED BY+.;+ THES|
00000490: 45 20 53 55 42 52 4F 55  54 49 4E 45 53 2E 20 20  |E SUBROUTINES.  |
000004A0: 20 20 20 20 20 20 20 20  20 20 2B 0D 3B 2B 2D 2D  |          +.;+--|
000004B0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
000004C0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2B 0D 3B  |-------------+.;|
000004D0: 2B 20 53 48 49 46 54 53  20 31 20 42 59 54 45 20  |+ SHIFTS 1 BYTE |
000004E0: 57 4F 52 4B 20 20 20 20  20 20 20 20 20 20 20 20  |WORK            |
000004F0: 2B 0D 3B 2B 20 57 4F 52  4B 41 20 20 33 20 42 59  |+.;+ WORKA  3 BY|
00000500: 54 45 20 57 4F 52 4B 20  41 52 45 41 20 20 20 20  |TE WORK AREA    |
00000510: 20 20 20 2B 0D 3B 2B 20  57 4F 52 4B 42 20 20 32  |   +.;+ WORKB  2|
00000520: 20 42 59 54 45 20 57 4F  52 4B 20 41 52 45 41 20  | BYTE WORK AREA |
00000530: 20 20 20 20 20 20 2B 0D  3B 2B 20 57 4F 52 4B 43  |      +.;+ WORKC|
00000540: 20 20 32 20 42 59 54 45  20 57 4F 52 4B 20 41 52  |  2 BYTE WORK AR|
00000550: 45 41 20 20 20 20 20 20  20 2B 0D 3B 2B 20 53 45  |EA       +.;+ SE|
00000560: 43 4E 55 4D 20 33 20 42  59 54 45 20 53 45 43 54  |CNUM 3 BYTE SECT|
00000570: 4F 52 20 4E 55 4D 42 45  52 20 49 4E 2B 0D 3B 2B  |OR NUMBER IN+.;+|
00000580: 20 20 20 20 20 20 20 20  20 20 48 49 2C 20 4D 45  |          HI, ME|
00000590: 44 2C 20 4C 4F 20 46 4F  52 4D 41 54 20 20 20 2B  |D, LO FORMAT   +|
000005A0: 0D 3B 2B 20 53 41 54 53  45 43 20 31 20 42 59 54  |.;+ SATSEC 1 BYT|
000005B0: 45 20 53 41 54 20 53 45  43 54 4F 52 20 20 20 20  |E SAT SECTOR    |
000005C0: 20 20 2B 0D 3B 2B 20 53  41 54 42 59 54 20 32 20  |  +.;+ SATBYT 2 |
000005D0: 42 59 54 45 20 42 59 54  45 20 4F 46 46 53 45 54  |BYTE BYTE OFFSET|
000005E0: 20 49 4E 20 20 2B 0D 3B  2B 20 20 20 20 20 20 20  | IN  +.;+       |
000005F0: 20 20 20 53 41 54 20 53  45 43 54 4F 52 2E 20 48  |   SAT SECTOR. H|
00000600: 49 2C 20 4C 4F 20 20 20  2B 0D 3B 2B 20 53 41 54  |I, LO   +.;+ SAT|
00000610: 42 49 54 20 31 20 42 59  54 45 20 42 49 54 20 4D  |BIT 1 BYTE BIT M|
00000620: 41 53 4B 20 4F 46 20 53  41 54 20 2B 0D 3B 2B 20  |ASK OF SAT +.;+ |
00000630: 20 20 20 20 20 20 20 20  20 53 45 43 54 4F 52 20  |         SECTOR |
00000640: 42 59 54 45 20 20 20 20  20 20 20 20 20 20 2B 0D  |BYTE          +.|
00000650: 3B 2B 20 43 59 4C 4D 53  42 20 31 20 42 59 54 45  |;+ CYLMSB 1 BYTE|
00000660: 20 4D 53 42 20 4F 46 20  43 59 4C 49 4E 44 45 52  | MSB OF CYLINDER|
00000670: 20 2B 0D 3B 2B 20 43 59  4C 4C 53 42 20 31 20 42  | +.;+ CYLLSB 1 B|
00000680: 59 54 45 20 4C 53 42 20  4F 46 20 43 59 4C 49 4E  |YTE LSB OF CYLIN|
00000690: 44 45 52 20 2B 0D 3B 2B  20 48 45 41 44 20 20 20  |DER +.;+ HEAD   |
000006A0: 31 20 42 59 54 45 20 48  45 41 44 20 4E 55 4D 42  |1 BYTE HEAD NUMB|
000006B0: 45 52 20 20 20 20 20 2B  0D 3B 2B 20 53 45 43 54  |ER     +.;+ SECT|
000006C0: 4F 52 20 31 20 42 59 54  45 20 53 45 43 54 4F 52  |OR 1 BYTE SECTOR|
000006D0: 20 4E 55 4D 42 45 52 20  20 20 2B 0D 3B 2B 20 53  | NUMBER   +.;+ S|
000006E0: 45 43 54 52 4B 20 31 20  42 59 54 45 20 4E 55 4D  |ECTRK 1 BYTE NUM|
000006F0: 42 45 52 20 4F 46 20 20  20 20 20 20 20 2B 0D 3B  |BER OF       +.;|
00000700: 2B 20 20 20 20 20 20 20  20 20 20 53 45 43 54 4F  |+          SECTO|
00000710: 52 53 20 50 45 52 20 54  52 41 43 4B 20 20 20 20  |RS PER TRACK    |
00000720: 2B 0D 3B 2B 20 53 45 43  43 59 4C 20 31 20 42 59  |+.;+ SECCYL 1 BY|
00000730: 54 45 20 4E 55 4D 42 45  52 20 4F 46 20 20 20 20  |TE NUMBER OF    |
00000740: 20 20 20 2B 0D 3B 2B 20  20 20 20 20 20 20 20 20  |   +.;+         |
00000750: 20 53 45 43 54 4F 52 53  20 50 45 52 20 43 59 4C  | SECTORS PER CYL|
00000760: 49 4E 44 45 52 20 2B 0D  3B 2B 2B 2B 2B 2B 2B 2B  |INDER +.;+++++++|
00000770: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000780: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 0D 3B 0D 3B 0D 3B  |++++++++++.;.;.;|
00000790: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
000007A0: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
000007B0: 2B 0D 3B 2B 20 43 4F 4E  56 45 52 54 20 52 45 4C  |+.;+ CONVERT REL|
000007C0: 41 54 49 56 45 20 53 45  43 54 4F 52 20 4E 55 4D  |ATIVE SECTOR NUM|
000007D0: 42 45 52 2B 0D 3B 2B 20  54 4F 20 43 59 4C 49 4E  |BER+.;+ TO CYLIN|
000007E0: 44 45 52 2C 20 48 45 41  44 20 41 4E 44 20 53 45  |DER, HEAD AND SE|
000007F0: 43 54 4F 52 2E 20 2B 0D  3B 2B 20 20 20 20 20 20  |CTOR. +.;+      |
00000800: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000810: 20 20 20 20 20 20 20 20  20 2B 0D 3B 2B 20 49 4E  |         +.;+ IN|
00000820: 50 55 54 20 2D 20 46 49  45 4C 44 20 53 45 43 4E  |PUT - FIELD SECN|
00000830: 55 4D 20 57 48 49 43 48  20 20 20 20 2B 0D 3B 2B  |UM WHICH    +.;+|
00000840: 20 20 43 4F 4E 54 41 49  4E 53 20 54 48 45 20 52  |  CONTAINS THE R|
00000850: 45 4C 41 54 49 56 45 20  53 45 43 54 4F 52 2E 2B  |ELATIVE SECTOR.+|
00000860: 0D 3B 2B 20 20 20 20 20  20 20 20 20 20 20 20 20  |.;+             |
00000870: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000880: 20 20 2B 0D 3B 2B 20 4F  55 54 50 55 54 20 2D 20  |  +.;+ OUTPUT - |
00000890: 46 49 45 4C 44 53 20 48  45 41 44 2C 20 43 59 4C  |FIELDS HEAD, CYL|
000008A0: 4C 53 42 2C 20 2B 0D 3B  2B 20 20 43 59 4C 4D 53  |LSB, +.;+  CYLMS|
000008B0: 42 2C 20 41 4E 44 20 53  45 43 54 4F 52 20 46 49  |B, AND SECTOR FI|
000008C0: 4C 4C 45 44 20 41 4E 44  2B 0D 3B 2B 20 20 41 20  |LLED AND+.;+  A |
000008D0: 2D 20 48 45 41 44 20 4E  55 4D 42 45 52 20 20 20  |- HEAD NUMBER   |
000008E0: 20 20 20 20 20 20 20 20  20 20 20 2B 0D 3B 2B 20  |           +.;+ |
000008F0: 20 59 20 2D 20 43 59 4C  49 4E 44 45 52 20 4C 53  | Y - CYLINDER LS|
00000900: 42 20 20 20 20 20 20 20  20 20 20 20 20 20 2B 0D  |B             +.|
00000910: 3B 2B 20 20 58 20 2D 20  53 45 43 54 4F 52 20 41  |;+  X - SECTOR A|
00000920: 4E 44 20 43 59 4C 20 4D  53 42 20 20 20 20 20 20  |ND CYL MSB      |
00000930: 20 2B 0D 3B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  | +.;++++++++++++|
00000940: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000950: 2B 2B 2B 2B 2B 0D 3B 0D  3B 0D 53 45 43 32 43 59  |+++++.;.;.SEC2CY|
00000960: 4C 44 43 42 20 4A 53 52  20 53 45 43 54 52 32 43  |LDCB JSR SECTR2C|
00000970: 59 4C 49 4E 44 52 20 3B  47 4F 20 43 4F 4E 56 45  |YLINDR ;GO CONVE|
00000980: 52 54 0D 53 45 43 32 43  59 4C 44 43 42 31 20 4C  |RT.SEC2CYLDCB1 L|
00000990: 44 58 20 23 36 20 3B 50  55 54 20 43 48 52 20 49  |DX #6 ;PUT CHR I|
000009A0: 4E 20 44 43 42 20 46 4F  52 4D 0D 20 4C 44 41 20  |N DCB FORM. LDA |
000009B0: 43 59 4C 4D 53 42 0D 53  48 49 46 54 4D 53 42 4C  |CYLMSB.SHIFTMSBL|
000009C0: 45 46 54 20 41 53 4C 20  41 0D 20 44 45 58 0D 20  |EFT ASL A. DEX. |
000009D0: 42 4E 45 20 53 48 49 46  54 4D 53 42 4C 45 46 54  |BNE SHIFTMSBLEFT|
000009E0: 0D 20 4F 52 41 20 53 45  43 54 4F 52 0D 20 53 54  |. ORA SECTOR. ST|
000009F0: 41 20 43 59 4C 4D 53 42  0D 20 52 54 53 20 3B 54  |A CYLMSB. RTS ;T|
00000A00: 49 53 20 44 4F 4E 45 0D  3B 0D 53 45 43 54 52 32  |IS DONE.;.SECTR2|
00000A10: 43 59 4C 49 4E 44 52 20  4C 44 41 20 23 30 20 3B  |CYLINDR LDA #0 ;|
00000A20: 5A 45 52 4F 20 57 4F 52  4B 2C 20 45 54 43 2E 0D  |ZERO WORK, ETC..|
00000A30: 20 53 54 41 20 57 4F 52  4B 42 0D 20 53 54 41 20  | STA WORKB. STA |
00000A40: 57 4F 52 4B 42 2B 31 0D  20 53 54 41 20 57 4F 52  |WORKB+1. STA WOR|
00000A50: 4B 43 2B 31 0D 20 53 54  41 20 48 45 41 44 0D 20  |KC+1. STA HEAD. |
00000A60: 53 54 41 20 43 59 4C 4D  53 42 0D 20 53 54 41 20  |STA CYLMSB. STA |
00000A70: 43 59 4C 4C 53 42 0D 20  4C 44 58 20 23 32 20 3B  |CYLLSB. LDX #2 ;|
00000A80: 4D 4F 56 45 20 53 45 43  4E 55 4D 20 54 4F 20 57  |MOVE SECNUM TO W|
00000A90: 4F 52 4B 20 41 0D 4D 4F  56 45 53 45 43 4E 55 4D  |ORK A.MOVESECNUM|
00000AA0: 32 41 20 4C 44 41 20 53  45 43 4E 55 4D 2C 58 0D  |2A LDA SECNUM,X.|
00000AB0: 20 53 54 41 20 57 4F 52  4B 41 2C 58 0D 20 44 45  | STA WORKA,X. DE|
00000AC0: 58 0D 20 42 50 4C 20 4D  4F 56 45 53 45 43 4E 55  |X. BPL MOVESECNU|
00000AD0: 4D 32 41 0D 20 4A 53 52  20 44 45 46 53 45 54 20  |M2A. JSR DEFSET |
00000AE0: 3B 47 45 54 20 50 54 52  20 54 4F 20 50 41 52 4D  |;GET PTR TO PARM|
00000AF0: 54 41 42 0D 20 4C 44 41  20 50 54 53 43 59 4C 2C  |TAB. LDA PTSCYL,|
00000B00: 58 20 3B 47 45 54 20 53  45 43 54 4F 52 20 50 45  |X ;GET SECTOR PE|
00000B10: 52 20 43 59 4C 0D 20 53  54 41 20 57 4F 52 4B 43  |R CYL. STA WORKC|
00000B20: 20 3B 54 49 4D 45 53 20  48 45 58 20 31 30 30 0D  | ;TIMES HEX 100.|
00000B30: 20 49 4E 43 20 57 4F 52  4B 42 20 3B 4D 41 4B 45  | INC WORKB ;MAKE|
00000B40: 20 43 4F 55 4E 54 45 52  20 32 35 36 0D 20 4C 44  | COUNTER 256. LD|
00000B50: 58 20 23 39 20 3B 50 52  49 4D 45 20 43 4F 55 4E  |X #9 ;PRIME COUN|
00000B60: 54 20 44 4F 57 4E 0D 43  41 4C 43 43 59 4C 49 4E  |T DOWN.CALCCYLIN|
00000B70: 44 45 52 20 4A 53 52 20  44 49 56 49 44 45 53 45  |DER JSR DIVIDESE|
00000B80: 43 54 4F 52 20 3B 47 4F  20 53 55 42 54 52 41 43  |CTOR ;GO SUBTRAC|
00000B90: 54 0D 20 42 43 43 20 55  50 44 41 54 45 4F 50 45  |T. BCC UPDATEOPE|
00000BA0: 52 41 4E 44 53 0D 20 4C  44 41 20 57 4F 52 4B 42  |RANDS. LDA WORKB|
00000BB0: 2B 31 0D 20 43 4C 43 0D  20 41 44 43 20 43 59 4C  |+1. CLC. ADC CYL|
00000BC0: 4C 53 42 0D 20 53 54 41  20 43 59 4C 4C 53 42 0D  |LSB. STA CYLLSB.|
00000BD0: 20 4C 44 41 20 57 4F 52  4B 42 0D 20 41 44 43 20  | LDA WORKB. ADC |
00000BE0: 43 59 4C 4D 53 42 0D 20  53 54 41 20 43 59 4C 4D  |CYLMSB. STA CYLM|
00000BF0: 53 42 0D 20 4A 4D 50 20  43 41 4C 43 43 59 4C 49  |SB. JMP CALCCYLI|
00000C00: 4E 44 45 52 20 3B 47 4F  20 53 45 45 20 49 46 20  |NDER ;GO SEE IF |
00000C10: 4D 4F 52 45 0D 3B 0D 55  50 44 41 54 45 4F 50 45  |MORE.;.UPDATEOPE|
00000C20: 52 41 4E 44 53 20 4C 53  52 20 57 4F 52 4B 42 20  |RANDS LSR WORKB |
00000C30: 3B 41 44 4A 55 53 54 20  41 44 44 45 52 0D 20 52  |;ADJUST ADDER. R|
00000C40: 4F 52 20 57 4F 52 4B 42  2B 31 0D 20 4C 53 52 20  |OR WORKB+1. LSR |
00000C50: 57 4F 52 4B 43 20 3B 53  48 49 46 54 20 44 49 56  |WORKC ;SHIFT DIV|
00000C60: 49 53 4F 52 0D 20 52 4F  52 20 57 4F 52 4B 43 2B  |ISOR. ROR WORKC+|
00000C70: 31 0D 20 44 45 58 0D 20  42 4E 45 20 43 41 4C 43  |1. DEX. BNE CALC|
00000C80: 43 59 4C 49 4E 44 45 52  20 3B 54 52 59 20 53 4F  |CYLINDER ;TRY SO|
00000C90: 4D 45 20 4D 4F 52 45 0D  20 4C 44 41 20 23 31 37  |ME MORE. LDA #17|
00000CA0: 20 3B 47 45 54 20 4E 55  4D 20 53 45 43 20 50 45  | ;GET NUM SEC PE|
00000CB0: 52 20 54 52 4B 0D 20 53  54 41 20 57 4F 52 4B 43  |R TRK. STA WORKC|
00000CC0: 2B 31 20 3B 49 4E 20 53  55 42 54 52 41 43 54 4F  |+1 ;IN SUBTRACTO|
00000CD0: 52 0D 43 41 4C 43 55 4C  41 54 45 48 45 41 44 20  |R.CALCULATEHEAD |
00000CE0: 4A 53 52 20 44 49 56 49  44 45 53 45 43 54 4F 52  |JSR DIVIDESECTOR|
00000CF0: 20 3B 47 4F 20 53 55 42  54 52 41 43 54 0D 20 42  | ;GO SUBTRACT. B|
00000D00: 43 43 20 53 41 56 45 53  45 43 54 4F 52 4E 55 4D  |CC SAVESECTORNUM|
00000D10: 20 3B 47 4F 20 49 46 20  44 4F 4E 45 0D 20 49 4E  | ;GO IF DONE. IN|
00000D20: 43 20 48 45 41 44 0D 20  42 4E 45 20 43 41 4C 43  |C HEAD. BNE CALC|
00000D30: 55 4C 41 54 45 48 45 41  44 0D 53 41 56 45 53 45  |ULATEHEAD.SAVESE|
00000D40: 43 54 4F 52 4E 55 4D 20  4C 44 41 20 57 4F 52 4B  |CTORNUM LDA WORK|
00000D50: 41 2B 32 20 3B 47 45 54  20 53 45 43 54 4F 52 20  |A+2 ;GET SECTOR |
00000D60: 4E 55 4D 0D 20 53 54 41  20 53 45 43 54 4F 52 0D  |NUM. STA SECTOR.|
00000D70: 20 52 54 53 0D 3B 0D 3B  0D 3B 2B 2B 2B 2B 2B 2B  | RTS.;.;.;++++++|
00000D80: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000D90: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 0D 3B 2B 20 53  |+++++++++++.;+ S|
00000DA0: 55 42 54 52 41 43 54 20  57 4F 52 4B 43 20 46 52  |UBTRACT WORKC FR|
00000DB0: 4F 4D 20 57 4F 52 4B 20  41 20 49 46 20 2B 0D 3B  |OM WORK A IF +.;|
00000DC0: 2B 20 57 4F 52 4B 41 20  3E 3D 20 57 4F 52 4B 43  |+ WORKA >= WORKC|
00000DD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000DE0: 2B 0D 3B 2B 20 52 45 54  55 52 4E 20 43 41 52 52  |+.;+ RETURN CARR|
00000DF0: 59 20 53 45 54 20 20 20  46 4F 52 20 44 49 44 49  |Y SET   FOR DIDI|
00000E00: 54 2E 20 2B 0D 3B 2B 20  52 45 54 55 52 4E 20 43  |T. +.;+ RETURN C|
00000E10: 41 52 52 59 20 43 4C 45  41 52 20 46 4F 52 20 53  |ARRY CLEAR FOR S|
00000E20: 4D 41 4C 4C 2E 20 2B 0D  3B 2B 2B 2B 2B 2B 2B 2B  |MALL. +.;+++++++|
00000E30: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00000E40: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 0D 3B 0D 44 49 56  |++++++++++.;.DIV|
00000E50: 49 44 45 53 45 43 54 4F  52 20 4C 44 41 20 57 4F  |IDESECTOR LDA WO|
00000E60: 52 4B 41 20 3B 43 48 45  43 4B 20 48 49 20 53 45  |RKA ;CHECK HI SE|
00000E70: 43 20 42 59 54 0D 20 42  4E 45 20 53 55 42 54 52  |C BYT. BNE SUBTR|
00000E80: 41 43 54 45 4D 0D 20 4C  44 41 20 57 4F 52 4B 41  |ACTEM. LDA WORKA|
00000E90: 2B 31 20 3B 43 48 45 43  4B 20 53 45 43 4F 4E 44  |+1 ;CHECK SECOND|
00000EA0: 20 42 59 54 45 0D 20 43  4D 50 20 57 4F 52 4B 43  | BYTE. CMP WORKC|
00000EB0: 20 3B 46 4F 52 20 3C 3D  0D 20 42 43 43 20 44 49  | ;FOR <=. BCC DI|
00000EC0: 56 49 44 45 52 45 54 55  52 4E 20 3B 47 4F 20 49  |VIDERETURN ;GO I|
00000ED0: 46 20 54 4F 4F 20 53 4D  41 4C 4C 0D 20 42 4E 45  |F TOO SMALL. BNE|
00000EE0: 20 53 55 42 54 52 41 43  54 45 4D 20 3B 47 4F 20  | SUBTRACTEM ;GO |
00000EF0: 4E 4F 54 20 45 51 55 41  4C 0D 20 4C 44 41 20 57  |NOT EQUAL. LDA W|
00000F00: 4F 52 4B 41 2B 32 20 3B  43 48 45 43 4B 20 4C 4F  |ORKA+2 ;CHECK LO|
00000F10: 57 20 42 59 54 45 0D 20  43 4D 50 20 57 4F 52 4B  |W BYTE. CMP WORK|
00000F20: 43 2B 31 0D 20 42 43 43  20 44 49 56 49 44 45 52  |C+1. BCC DIVIDER|
00000F30: 45 54 55 52 4E 20 3B 54  4F 4F 20 53 4D 41 4C 4C  |ETURN ;TOO SMALL|
00000F40: 20 47 4F 20 4F 4E 0D 53  55 42 54 52 41 43 54 45  | GO ON.SUBTRACTE|
00000F50: 4D 20 4C 44 41 20 57 4F  52 4B 41 2B 32 20 3B 53  |M LDA WORKA+2 ;S|
00000F60: 55 42 54 52 41 43 54 0D  20 53 45 43 0D 20 53 42  |UBTRACT. SEC. SB|
00000F70: 43 20 57 4F 52 4B 43 2B  31 0D 20 53 54 41 20 57  |C WORKC+1. STA W|
00000F80: 4F 52 4B 41 2B 32 0D 20  4C 44 41 20 57 4F 52 4B  |ORKA+2. LDA WORK|
00000F90: 41 2B 31 0D 20 53 42 43  20 57 4F 52 4B 43 0D 20  |A+1. SBC WORKC. |
00000FA0: 53 54 41 20 57 4F 52 4B  41 2B 31 0D 20 4C 44 41  |STA WORKA+1. LDA|
00000FB0: 20 57 4F 52 4B 41 0D 20  53 42 43 20 23 30 0D 20  | WORKA. SBC #0. |
00000FC0: 53 54 41 20 57 4F 52 4B  41 0D 20 53 45 43 0D 44  |STA WORKA. SEC.D|
00000FD0: 49 56 49 44 45 52 45 54  55 52 4E 20 52 54 53 0D  |IVIDERETURN RTS.|
00000FE0: 3B 0D 3B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |;.;+++++++++++++|
00000FF0: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001000: 2B 2B 2B 2B 0D 3B 2B 20  43 4F 4E 56 45 52 54 20  |++++.;+ CONVERT |
00001010: 53 41 54 53 45 43 2C 20  53 41 54 42 59 54 2C 20  |SATSEC, SATBYT, |
00001020: 41 4E 44 20 20 20 2B 0D  3B 2B 20 53 41 54 42 49  |AND   +.;+ SATBI|
00001030: 54 20 54 4F 20 52 45 4C  41 54 49 56 45 20 53 45  |T TO RELATIVE SE|
00001040: 43 54 4F 52 20 23 2E 20  20 2B 0D 3B 2B 20 20 20  |CTOR #.  +.;+   |
00001050: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001060: 20 20 20 20 20 20 20 20  20 20 20 20 2B 0D 3B 2B  |            +.;+|
00001070: 20 49 4E 50 55 54 20 2D  20 46 49 45 4C 44 53 20  | INPUT - FIELDS |
00001080: 53 41 54 53 45 43 2C 20  53 41 54 42 59 54 20 2B  |SATSEC, SATBYT +|
00001090: 0D 3B 2B 20 20 20 20 41  4E 44 20 53 41 54 42 49  |.;+    AND SATBI|
000010A0: 54 2E 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |T.              |
000010B0: 20 20 2B 0D 3B 2B 20 20  20 20 20 20 20 20 20 20  |  +.;+          |
000010C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010D0: 20 20 20 20 20 2B 0D 3B  2B 20 4F 55 54 50 55 54  |     +.;+ OUTPUT|
000010E0: 2D 20 52 45 4C 41 54 49  56 45 20 53 45 43 54 4F  |- RELATIVE SECTO|
000010F0: 52 20 49 4E 20 20 20 20  2B 0D 3B 2B 20 53 45 43  |R IN    +.;+ SEC|
00001100: 4E 55 4D 2E 20 20 20 20  20 20 20 20 20 20 20 20  |NUM.            |
00001110: 20 20 20 20 20 20 20 20  20 20 20 2B 0D 3B 2B 2B  |           +.;++|
00001120: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001130: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 0D  |+++++++++++++++.|
00001140: 3B 0D 53 41 54 32 53 45  43 54 4F 52 20 4C 44 41  |;.SAT2SECTOR LDA|
00001150: 20 23 30 20 3B 49 4E 49  54 20 53 45 43 54 4F 52  | #0 ;INIT SECTOR|
00001160: 20 4E 55 4D 0D 20 53 54  41 20 53 45 43 4E 55 4D  | NUM. STA SECNUM|
00001170: 0D 20 4C 44 58 20 23 34  20 3B 4E 55 4D 42 45 52  |. LDX #4 ;NUMBER|
00001180: 20 54 4F 20 53 48 49 46  54 0D 20 4C 44 41 20 53  | TO SHIFT. LDA S|
00001190: 41 54 53 45 43 20 3B 47  45 54 20 46 49 45 4C 44  |ATSEC ;GET FIELD|
000011A0: 0D 53 48 49 46 54 53 41  54 53 45 43 4C 46 20 41  |.SHIFTSATSECLF A|
000011B0: 53 4C 20 41 0D 20 52 4F  4C 20 53 45 43 4E 55 4D  |SL A. ROL SECNUM|
000011C0: 0D 20 44 45 58 0D 20 42  4E 45 20 53 48 49 46 54  |. DEX. BNE SHIFT|
000011D0: 53 41 54 53 45 43 4C 46  0D 20 53 54 41 20 53 45  |SATSECLF. STA SE|
000011E0: 43 4E 55 4D 2B 31 0D 20  4C 44 41 20 53 41 54 42  |CNUM+1. LDA SATB|
000011F0: 59 54 20 3B 47 45 54 20  48 49 0D 20 53 54 41 20  |YT ;GET HI. STA |
00001200: 57 4F 52 4B 41 0D 20 4C  44 58 20 23 33 20 3B 4D  |WORKA. LDX #3 ;M|
00001210: 55 4C 54 49 50 4C 59 20  42 59 20 38 0D 20 4C 44  |ULTIPLY BY 8. LD|
00001220: 41 20 53 41 54 42 59 54  2B 31 20 3B 4E 4F 57 20  |A SATBYT+1 ;NOW |
00001230: 4C 4F 20 42 59 54 45 20  4F 46 46 53 45 54 0D 53  |LO BYTE OFFSET.S|
00001240: 48 49 46 54 53 41 54 42  59 54 4C 46 20 41 53 4C  |HIFTSATBYTLF ASL|
00001250: 20 41 0D 20 52 4F 4C 20  57 4F 52 4B 41 0D 20 44  | A. ROL WORKA. D|
00001260: 45 58 0D 20 42 4E 45 20  53 48 49 46 54 53 41 54  |EX. BNE SHIFTSAT|
00001270: 42 59 54 4C 46 0D 20 53  54 41 20 53 45 43 4E 55  |BYTLF. STA SECNU|
00001280: 4D 2B 32 0D 20 43 4C 43  0D 20 4C 44 41 20 57 4F  |M+2. CLC. LDA WO|
00001290: 52 4B 41 20 3B 41 44 44  20 48 49 20 42 59 54 45  |RKA ;ADD HI BYTE|
000012A0: 0D 20 41 44 43 20 53 45  43 4E 55 4D 2B 31 0D 20  |. ADC SECNUM+1. |
000012B0: 53 54 41 20 53 45 43 4E  55 4D 2B 31 0D 20 4C 44  |STA SECNUM+1. LD|
000012C0: 41 20 53 41 54 42 49 54  20 3B 47 45 54 20 54 48  |A SATBIT ;GET TH|
000012D0: 45 20 42 49 54 20 4E 55  4D 42 45 52 0D 20 4C 44  |E BIT NUMBER. LD|
000012E0: 58 20 23 30 0D 53 48 49  46 54 53 41 54 42 49 54  |X #0.SHIFTSATBIT|
000012F0: 4C 46 20 41 53 4C 20 41  20 3B 53 48 49 46 54 20  |LF ASL A ;SHIFT |
00001300: 54 49 4C 4C 20 49 54 20  47 4F 45 53 0D 20 42 43  |TILL IT GOES. BC|
00001310: 53 20 41 44 44 54 4F 53  45 43 4E 55 4D 20 3B 4F  |S ADDTOSECNUM ;O|
00001320: 55 54 0D 20 49 4E 58 0D  20 42 4E 45 20 53 48 49  |UT. INX. BNE SHI|
00001330: 46 54 53 41 54 42 49 54  4C 46 0D 41 44 44 54 4F  |FTSATBITLF.ADDTO|
00001340: 53 45 43 4E 55 4D 20 54  58 41 20 3B 53 45 54 20  |SECNUM TXA ;SET |
00001350: 55 50 20 46 4F 52 20 41  44 44 0D 20 4A 4D 50 20  |UP FOR ADD. JMP |
00001360: 41 44 44 42 59 54 45 32  53 45 43 4E 55 4D 0D 3B  |ADDBYTE2SECNUM.;|
00001370: 43 4C 43 0D 3B 41 44 43  20 53 45 43 4E 55 4D 2B  |CLC.;ADC SECNUM+|
00001380: 32 20 3B 41 44 44 20 54  4F 20 54 4F 54 41 4C 0D  |2 ;ADD TO TOTAL.|
00001390: 3B 53 54 41 20 53 45 43  4E 55 4D 2B 32 0D 3B 42  |;STA SECNUM+2.;B|
000013A0: 43 43 20 53 41 54 32 53  45 43 52 45 54 55 52 4E  |CC SAT2SECRETURN|
000013B0: 0D 3B 49 4E 43 20 53 45  43 4E 55 4D 2B 31 20 3B  |.;INC SECNUM+1 ;|
000013C0: 45 4C 53 45 20 41 44 44  20 4F 56 45 52 46 4C 4F  |ELSE ADD OVERFLO|
000013D0: 57 0D 3B 42 4E 45 20 53  41 54 32 53 45 43 52 45  |W.;BNE SAT2SECRE|
000013E0: 54 55 52 4E 0D 3B 49 4E  43 20 53 45 43 4E 55 4D  |TURN.;INC SECNUM|
000013F0: 0D 3B 53 41 54 32 53 45  43 52 45 54 55 52 4E 20  |.;SAT2SECRETURN |
00001400: 52 54 53 20 3B 52 45 54  55 52 4E 0D 3B 0D 3B 2B  |RTS ;RETURN.;.;+|
00001410: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001420: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001430: 0D 3B 2B 20 43 4F 4E 56  45 52 54 20 53 45 43 54  |.;+ CONVERT SECT|
00001440: 4F 52 20 4E 55 4D 42 45  52 20 54 4F 20 53 41 54  |OR NUMBER TO SAT|
00001450: 20 20 2B 0D 3B 2B 20 45  4E 54 52 59 2E 20 20 20  |  +.;+ ENTRY.   |
00001460: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001470: 20 20 20 20 20 2B 0D 3B  2B 20 20 20 20 20 20 20  |     +.;+       |
00001480: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001490: 20 20 20 20 20 20 20 20  2B 0D 3B 2B 20 49 4E 50  |        +.;+ INP|
000014A0: 55 54 3A 20 41 2D 4D 49  44 44 4C 45 20 42 59 54  |UT: A-MIDDLE BYT|
000014B0: 45 20 4F 46 20 53 45 43  4E 55 4D 2B 0D 3B 2B 20  |E OF SECNUM+.;+ |
000014C0: 20 20 20 20 20 20 20 58  2D 48 49 20 42 59 54 45  |       X-HI BYTE|
000014D0: 20 4F 46 20 53 45 43 4E  55 4D 20 20 20 20 2B 0D  | OF SECNUM    +.|
000014E0: 3B 2B 20 20 20 20 20 20  20 20 59 2D 4C 4F 20 42  |;+        Y-LO B|
000014F0: 59 54 45 20 4F 46 20 53  45 43 4E 55 4D 20 20 20  |YTE OF SECNUM   |
00001500: 20 2B 0D 3B 2B 20 20 20  20 20 20 20 20 20 20 20  | +.;+           |
00001510: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001520: 20 20 20 20 2B 0D 3B 2B  20 20 20 20 20 20 20 20  |    +.;+        |
00001530: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001540: 20 20 20 20 20 20 20 2B  0D 3B 2B 20 4F 55 54 50  |       +.;+ OUTP|
00001550: 55 54 3A 20 53 41 54 20  53 45 43 54 4F 52 2C 20  |UT: SAT SECTOR, |
00001560: 42 59 54 45 2C 20 41 4E  44 20 2B 0D 3B 2B 20 20  |BYTE, AND +.;+  |
00001570: 20 20 20 20 20 20 20 42  49 54 20 49 4E 20 42 59  |       BIT IN BY|
00001580: 54 45 2E 20 20 20 20 20  20 20 20 20 20 2B 0D 3B  |TE.          +.;|
00001590: 2B 20 53 41 54 53 45 43  20 2D 20 53 45 43 54 4F  |+ SATSEC - SECTO|
000015A0: 52 20 4E 55 4D 42 45 52  20 4F 46 20 53 41 54 45  |R NUMBER OF SATE|
000015B0: 2B 0D 3B 2B 20 53 41 54  42 59 54 20 2D 20 42 59  |+.;+ SATBYT - BY|
000015C0: 54 45 20 4F 46 20 53 41  54 45 20 20 20 20 20 20  |TE OF SATE      |
000015D0: 20 20 20 2B 0D 3B 2B 20  53 41 54 42 49 54 20 2D  |   +.;+ SATBIT -|
000015E0: 20 42 49 54 20 4F 46 20  42 59 54 45 20 20 20 20  | BIT OF BYTE    |
000015F0: 20 20 20 20 20 20 2B 0D  3B 2B 2B 2B 2B 2B 2B 2B  |      +.;+++++++|
00001600: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001610: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 0D 3B 0D 53 45 43  |++++++++++.;.SEC|
00001620: 54 4F 52 32 53 41 54 20  53 54 41 20 53 41 54 53  |TOR2SAT STA SATS|
00001630: 45 43 20 3B 41 20 48 41  53 20 4D 49 44 44 4C 45  |EC ;A HAS MIDDLE|
00001640: 20 42 59 54 45 0D 20 41  4E 44 20 23 24 30 46 20  | BYTE. AND #$0F |
00001650: 3B 49 53 4F 4C 41 54 45  20 4C 4F 57 20 31 32 20  |;ISOLATE LOW 12 |
00001660: 42 49 54 53 20 46 4F 52  20 20 0D 20 53 54 41 20  |BITS FOR  . STA |
00001670: 53 41 54 42 59 54 20 3B  46 4F 52 20 53 41 54 42  |SATBYT ;FOR SATB|
00001680: 59 54 0D 20 54 58 41 20  3B 47 45 54 20 48 49 20  |YT. TXA ;GET HI |
00001690: 42 59 54 45 20 4F 46 20  53 45 43 4E 55 4D 0D 20  |BYTE OF SECNUM. |
000016A0: 4C 44 58 20 23 34 20 3B  4E 45 45 44 20 54 4F 20  |LDX #4 ;NEED TO |
000016B0: 53 48 49 46 54 20 46 4F  52 20 53 41 54 53 45 43  |SHIFT FOR SATSEC|
000016C0: 0D 44 49 56 49 44 45 42  59 34 30 39 36 20 4C 53  |.DIVIDEBY4096 LS|
000016D0: 52 20 41 20 3B 53 41 54  53 45 43 20 3D 20 49 4E  |R A ;SATSEC = IN|
000016E0: 54 28 53 45 43 4E 55 4D  2F 34 30 39 36 29 0D 20  |T(SECNUM/4096). |
000016F0: 52 4F 52 20 53 41 54 53  45 43 0D 20 44 45 58 0D  |ROR SATSEC. DEX.|
00001700: 20 42 4E 45 20 44 49 56  49 44 45 42 59 34 30 39  | BNE DIVIDEBY409|
00001710: 36 20 3B 44 4F 20 41 4C  4C 20 34 20 53 48 49 46  |6 ;DO ALL 4 SHIF|
00001720: 54 53 0D 20 54 59 41 20  3B 47 45 54 20 4C 4F 57  |TS. TYA ;GET LOW|
00001730: 20 42 59 54 45 20 4F 46  20 53 45 43 4E 55 4D 0D  | BYTE OF SECNUM.|
00001740: 20 53 54 41 20 53 41 54  42 59 54 2B 31 20 3B 50  | STA SATBYT+1 ;P|
00001750: 55 54 20 49 4E 20 4F 46  46 53 45 54 0D 20 41 4E  |UT IN OFFSET. AN|
00001760: 44 20 23 24 30 37 20 3B  49 53 4F 4C 41 54 45 20  |D #$07 ;ISOLATE |
00001770: 54 48 45 20 42 49 54 20  4E 55 4D 42 45 52 0D 20  |THE BIT NUMBER. |
00001780: 54 41 58 20 3B 4E 4F 57  20 50 55 54 20 42 49 54  |TAX ;NOW PUT BIT|
00001790: 20 49 4E 20 49 54 53 20  50 4C 41 43 45 0D 20 4C  | IN ITS PLACE. L|
000017A0: 44 41 20 23 24 38 30 20  3B 50 52 49 4D 45 20 42  |DA #$80 ;PRIME B|
000017B0: 49 54 0D 53 48 49 46 54  53 45 43 20 44 45 58 20  |IT.SHIFTSEC DEX |
000017C0: 3B 43 48 45 43 4B 20 49  46 20 54 48 52 55 0D 20  |;CHECK IF THRU. |
000017D0: 42 4D 49 20 53 41 56 45  53 41 54 42 49 54 0D 20  |BMI SAVESATBIT. |
000017E0: 4C 53 52 20 41 0D 20 42  4E 45 20 53 48 49 46 54  |LSR A. BNE SHIFT|
000017F0: 53 45 43 0D 53 41 56 45  53 41 54 42 49 54 20 53  |SEC.SAVESATBIT S|
00001800: 54 41 20 53 41 54 42 49  54 20 3B 4E 4F 57 20 48  |TA SATBIT ;NOW H|
00001810: 41 56 45 20 42 49 54 0D  20 4C 44 58 20 23 33 20  |AVE BIT. LDX #3 |
00001820: 3B 4E 4F 57 20 44 49 56  49 44 45 20 42 59 54 45  |;NOW DIVIDE BYTE|
00001830: 20 4F 46 46 53 45 54 20  42 59 20 38 0D 44 49 56  | OFFSET BY 8.DIV|
00001840: 49 44 53 41 54 42 59 54  42 59 38 20 4C 53 52 20  |IDSATBYTBY8 LSR |
00001850: 53 41 54 42 59 54 0D 20  52 4F 52 20 53 41 54 42  |SATBYT. ROR SATB|
00001860: 59 54 2B 31 0D 20 44 45  58 0D 20 42 4E 45 20 44  |YT+1. DEX. BNE D|
00001870: 49 56 49 44 53 41 54 42  59 54 42 59 38 0D 20 52  |IVIDSATBYTBY8. R|
00001880: 54 53 0D 3B 0D 3B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |TS.;.;++++++++++|
00001890: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
000018A0: 2B 2B 2B 2B 2B 2B 2B 0D  3B 2B 20 43 4F 4E 56 45  |+++++++.;+ CONVE|
000018B0: 52 54 20 43 59 4C 49 4E  44 45 52 2C 20 48 45 41  |RT CYLINDER, HEA|
000018C0: 44 2C 20 53 45 43 54 4F  52 2B 0D 3B 2B 20 54 4F  |D, SECTOR+.;+ TO|
000018D0: 20 53 45 43 54 4F 52 20  4E 55 4D 42 45 52 2E 20  | SECTOR NUMBER. |
000018E0: 20 20 20 20 20 20 20 20  20 20 20 20 2B 0D 3B 2B  |            +.;+|
000018F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001900: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 2B  |               +|
00001910: 0D 3B 2B 20 54 48 45 52  45 20 41 52 45 20 32 20  |.;+ THERE ARE 2 |
00001920: 45 4E 54 52 49 45 53 20  54 4F 20 54 48 49 53 20  |ENTRIES TO THIS |
00001930: 20 20 2B 0D 3B 2B 20 53  55 42 52 4F 55 54 49 4E  |  +.;+ SUBROUTIN|
00001940: 45 2E 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |E.              |
00001950: 20 20 20 20 20 2B 0D 3B  2B 20 43 59 4C 32 53 45  |     +.;+ CYL2SE|
00001960: 43 54 4F 52 44 43 42 20  2D 20 49 4E 50 55 54 20  |CTORDCB - INPUT |
00001970: 49 53 20 41 53 20 46 4F  4C 4C 4F 57 53 20 20 2B  |IS AS FOLLOWS  +|
00001980: 0D 3B 2B 20 20 20 20 20  41 20 2D 20 44 52 49 56  |.;+     A - DRIV|
00001990: 45 2D 48 45 41 44 20 42  59 54 45 20 20 20 20 20  |E-HEAD BYTE     |
000019A0: 20 20 2B 0D 3B 2B 20 20  20 20 20 58 20 2D 20 4D  |  +.;+     X - M|
000019B0: 53 42 2D 53 45 43 54 4F  52 20 20 20 20 20 20 20  |SB-SECTOR       |
000019C0: 20 20 20 20 20 2B 0D 3B  2B 20 20 20 20 20 59 20  |     +.;+     Y |
000019D0: 2D 20 4C 53 42 20 43 59  4C 49 4E 44 45 52 20 20  |- LSB CYLINDER  |
000019E0: 20 20 20 20 20 20 20 20  2B 0D 3B 2B 20 20 20 20  |        +.;+    |
000019F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001A00: 20 20 20 20 20 20 20 20  20 20 20 2B 0D 3B 2B 20  |           +.;+ |
00001A10: 43 59 4C 49 4E 44 45 52  32 53 45 43 54 52 20 2D  |CYLINDER2SECTR -|
00001A20: 20 54 48 45 20 46 4F 4C  4C 4F 57 49 4E 47 20 46  | THE FOLLOWING F|
00001A30: 49 45 4C 44 53 20 2B 0D  3B 2B 20 20 20 20 20 4D  |IELDS +.;+     M|
00001A40: 55 53 54 20 42 45 20 49  4E 49 54 49 41 4C 49 5A  |UST BE INITIALIZ|
00001A50: 45 44 20 42 45 46 4F 52  45 2B 0D 3B 2B 20 20 20  |ED BEFORE+.;+   |
00001A60: 20 20 43 41 4C 4C 49 4E  47 20 54 48 49 53 20 45  |  CALLING THIS E|
00001A70: 4E 54 52 59 2E 20 20 20  20 20 20 20 2B 0D 3B 2B  |NTRY.       +.;+|
00001A80: 20 20 48 45 41 44 2C 20  53 45 43 54 4F 52 2C 20  |  HEAD, SECTOR, |
00001A90: 43 59 4C 4C 53 42 2C 20  43 59 4C 4D 53 42 20 2B  |CYLLSB, CYLMSB +|
00001AA0: 0D 3B 2B 20 20 20 20 20  20 20 20 20 20 20 20 20  |.;+             |
00001AB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001AC0: 20 20 2B 0D 3B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |  +.;+++++++++++|
00001AD0: 2B 2B 2B 2B 2B 2B 2B 2B  2B 2B 2B 2B 2B 2B 2B 2B  |++++++++++++++++|
00001AE0: 2B 2B 2B 2B 2B 2B 0D 3B  0D 43 59 4C 32 53 45 43  |++++++.;.CYL2SEC|
00001AF0: 54 4F 52 44 43 42 20 53  54 59 20 43 59 4C 4C 53  |TORDCB STY CYLLS|
00001B00: 42 20 3B 50 55 54 20 49  4E 20 4C 53 42 20 4F 46  |B ;PUT IN LSB OF|
00001B10: 20 43 59 4C 49 4E 44 45  52 0D 20 41 4E 44 20 23  | CYLINDER. AND #|
00001B20: 24 30 46 20 3B 49 53 4F  4C 41 54 45 20 4A 55 53  |$0F ;ISOLATE JUS|
00001B30: 54 20 54 48 45 20 48 45  41 44 0D 20 53 54 41 20  |T THE HEAD. STA |
00001B40: 48 45 41 44 0D 20 54 58  41 20 3B 47 45 54 20 4D  |HEAD. TXA ;GET M|
00001B50: 53 42 20 41 4E 44 20 53  45 43 54 4F 52 0D 20 41  |SB AND SECTOR. A|
00001B60: 4E 44 20 23 24 31 46 20  3B 49 53 4F 4C 41 54 45  |ND #$1F ;ISOLATE|
00001B70: 20 53 45 43 54 4F 52 20  4E 55 4D 42 45 52 0D 20  | SECTOR NUMBER. |
00001B80: 53 54 41 20 53 45 43 54  4F 52 0D 20 54 58 41 20  |STA SECTOR. TXA |
00001B90: 3B 4E 4F 57 20 48 41 4E  44 4C 45 20 4D 53 42 20  |;NOW HANDLE MSB |
00001BA0: 4F 46 20 43 59 4C 49 4E  44 45 52 0D 20 4C 44 58  |OF CYLINDER. LDX|
00001BB0: 20 23 36 20 3B 4E 55 4D  42 45 52 20 4F 46 20 53  | #6 ;NUMBER OF S|
00001BC0: 48 49 46 54 53 0D 53 48  49 46 54 44 4F 57 4E 4D  |HIFTS.SHIFTDOWNM|
00001BD0: 53 42 20 4C 53 52 20 41  0D 20 44 45 58 0D 20 42  |SB LSR A. DEX. B|
00001BE0: 4E 45 20 53 48 49 46 54  44 4F 57 4E 4D 53 42 0D  |NE SHIFTDOWNMSB.|
00001BF0: 20 53 54 41 20 43 59 4C  4D 53 42 20 3B 50 55 54  | STA CYLMSB ;PUT|
00001C00: 20 49 54 20 41 57 41 59  0D 3B 0D 43 59 4C 49 4E  | IT AWAY.;.CYLIN|
00001C10: 44 45 52 32 53 45 43 54  52 20 4C 44 41 20 23 30  |DER2SECTR LDA #0|
00001C20: 20 3B 43 4C 45 41 52 20  54 48 45 20 52 45 53 55  | ;CLEAR THE RESU|
00001C30: 4C 54 20 46 49 45 4C 44  0D 20 53 54 41 20 53 45  |LT FIELD. STA SE|
00001C40: 43 4E 55 4D 0D 20 53 54  41 20 53 45 43 4E 55 4D  |CNUM. STA SECNUM|
00001C50: 2B 31 0D 20 53 54 41 20  53 45 43 4E 55 4D 2B 32  |+1. STA SECNUM+2|
00001C60: 0D 20 4C 44 59 20 23 38  20 3B 50 52 49 4D 45 20  |. LDY #8 ;PRIME |
00001C70: 53 48 49 46 54 53 0D 20  4A 53 52 20 44 45 46 53  |SHIFTS. JSR DEFS|
00001C80: 45 54 20 3B 47 45 54 20  50 41 52 4D 20 54 41 42  |ET ;GET PARM TAB|
00001C90: 20 4F 46 46 53 45 54 0D  20 4C 44 41 20 50 54 53  | OFFSET. LDA PTS|
00001CA0: 43 59 4C 2C 58 20 3B 41  4E 44 20 53 45 43 54 4F  |CYL,X ;AND SECTO|
00001CB0: 52 20 50 45 52 20 43 59  4C 0D 20 53 54 41 20 57  |R PER CYL. STA W|
00001CC0: 4F 52 4B 42 0D 4D 55 4C  49 50 4C 59 43 59 4C 49  |ORKB.MULIPLYCYLI|
00001CD0: 4E 44 52 20 3D 20 2A 20  3B 43 4C 45 41 52 20 43  |NDR = * ;CLEAR C|
00001CE0: 41 52 52 59 0D 20 4C 44  41 20 43 59 4C 4C 53 42  |ARRY. LDA CYLLSB|
00001CF0: 20 3B 47 45 54 20 4C 4F  57 20 43 59 4C 20 4E 55  | ;GET LOW CYL NU|
00001D00: 4D 42 45 52 0D 20 53 54  41 20 57 4F 52 4B 41 2B  |MBER. STA WORKA+|
00001D10: 32 0D 20 4C 44 41 20 43  59 4C 4D 53 42 20 3B 47  |2. LDA CYLMSB ;G|
00001D20: 45 54 20 48 49 47 48 20  43 59 4C 20 4E 55 4D 42  |ET HIGH CYL NUMB|
00001D30: 45 52 0D 20 53 54 41 20  57 4F 52 4B 41 2B 31 0D  |ER. STA WORKA+1.|
00001D40: 20 4C 44 41 20 23 30 20  3B 43 4C 45 41 52 20 4E  | LDA #0 ;CLEAR N|
00001D50: 45 58 54 20 57 4F 52 4B  0D 20 53 54 41 20 57 4F  |EXT WORK. STA WO|
00001D60: 52 4B 41 0D 20 44 45 59  0D 20 41 53 4C 20 57 4F  |RKA. DEY. ASL WO|
00001D70: 52 4B 42 20 3B 53 48 49  46 54 20 53 45 43 2F 43  |RKB ;SHIFT SEC/C|
00001D80: 59 4C 0D 20 42 43 43 20  41 4E 59 4D 4F 52 45 53  |YL. BCC ANYMORES|
00001D90: 48 49 46 54 53 0D 20 54  59 41 20 3B 4D 4F 56 45  |HIFTS. TYA ;MOVE|
00001DA0: 20 54 4F 20 58 0D 20 54  41 58 0D 20 42 45 51 20  | TO X. TAX. BEQ |
00001DB0: 41 44 44 54 4F 53 45 43  4E 55 4D 32 0D 20 43 4C  |ADDTOSECNUM2. CL|
00001DC0: 43 0D 53 48 49 46 54 57  4F 52 4B 41 4C 20 41 53  |C.SHIFTWORKAL AS|
00001DD0: 4C 20 57 4F 52 4B 41 2B  32 0D 20 52 4F 4C 20 57  |L WORKA+2. ROL W|
00001DE0: 4F 52 4B 41 2B 31 0D 20  52 4F 4C 20 57 4F 52 4B  |ORKA+1. ROL WORK|
00001DF0: 41 0D 20 44 45 58 0D 20  42 4E 45 20 53 48 49 46  |A. DEX. BNE SHIF|
00001E00: 54 57 4F 52 4B 41 4C 0D  41 44 44 54 4F 53 45 43  |TWORKAL.ADDTOSEC|
00001E10: 4E 55 4D 32 20 4C 44 58  20 23 32 0D 20 43 4C 43  |NUM2 LDX #2. CLC|
00001E20: 0D 41 44 44 54 4F 53 45  43 4E 55 4D 4C 50 20 4C  |.ADDTOSECNUMLP L|
00001E30: 44 41 20 53 45 43 4E 55  4D 2C 58 0D 20 41 44 43  |DA SECNUM,X. ADC|
00001E40: 20 57 4F 52 4B 41 2C 58  0D 20 53 54 41 20 53 45  | WORKA,X. STA SE|
00001E50: 43 4E 55 4D 2C 58 0D 20  44 45 58 0D 20 42 50 4C  |CNUM,X. DEX. BPL|
00001E60: 20 41 44 44 54 4F 53 45  43 4E 55 4D 4C 50 0D 41  | ADDTOSECNUMLP.A|
00001E70: 4E 59 4D 4F 52 45 53 48  49 46 54 53 20 43 50 59  |NYMORESHIFTS CPY|
00001E80: 20 23 30 20 3B 41 4E 59  20 4D 4F 52 45 3F 0D 20  | #0 ;ANY MORE?. |
00001E90: 42 4E 45 20 4D 55 4C 49  50 4C 59 43 59 4C 49 4E  |BNE MULIPLYCYLIN|
00001EA0: 44 52 0D 3B 2B 20 41 44  44 20 49 4E 20 48 45 41  |DR.;+ ADD IN HEA|
00001EB0: 44 20 58 20 53 45 43 54  4F 52 20 50 45 52 20 54  |D X SECTOR PER T|
00001EC0: 52 4B 0D 20 4C 44 58 20  48 45 41 44 20 3B 47 45  |RK. LDX HEAD ;GE|
00001ED0: 54 20 43 4F 55 4E 54 45  52 0D 20 42 45 51 20 41  |T COUNTER. BEQ A|
00001EE0: 44 44 53 45 43 54 32 53  45 43 4E 55 4D 20 3B 47  |DDSECT2SECNUM ;G|
00001EF0: 4F 20 49 46 20 48 45 41  44 20 30 0D 41 44 44 48  |O IF HEAD 0.ADDH|
00001F00: 45 41 44 58 53 45 43 54  52 4B 20 4C 44 41 20 23  |EADXSECTRK LDA #|
00001F10: 31 37 20 3B 47 45 54 20  53 45 43 54 4F 52 53 20  |17 ;GET SECTORS |
00001F20: 50 45 52 20 54 52 41 43  4B 0D 20 4A 53 52 20 41  |PER TRACK. JSR A|
00001F30: 44 44 42 59 54 45 32 53  45 43 4E 55 4D 20 3B 47  |DDBYTE2SECNUM ;G|
00001F40: 4F 20 41 44 44 20 54 4F  20 54 4F 54 41 4C 0D 20  |O ADD TO TOTAL. |
00001F50: 44 45 58 0D 20 42 4E 45  20 41 44 44 48 45 41 44  |DEX. BNE ADDHEAD|
00001F60: 58 53 45 43 54 52 4B 0D  3B 2B 20 41 44 44 20 54  |XSECTRK.;+ ADD T|
00001F70: 48 45 20 53 45 43 54 4F  52 0D 41 44 44 53 45 43  |HE SECTOR.ADDSEC|
00001F80: 54 32 53 45 43 4E 55 4D  20 4C 44 41 20 53 45 43  |T2SECNUM LDA SEC|
00001F90: 54 4F 52 0D 20 4A 53 52  20 41 44 44 42 59 54 45  |TOR. JSR ADDBYTE|
00001FA0: 32 53 45 43 4E 55 4D 0D  20 4C 44 41 20 53 45 43  |2SECNUM. LDA SEC|
00001FB0: 4E 55 4D 0D 20 4C 44 58  20 53 45 43 4E 55 4D 2B  |NUM. LDX SECNUM+|
00001FC0: 31 0D 20 4C 44 59 20 53  45 43 4E 55 4D 2B 32 0D  |1. LDY SECNUM+2.|
00001FD0: 20 52 54 53 0D 41 44 44  42 59 54 45 32 53 45 43  | RTS.ADDBYTE2SEC|
00001FE0: 4E 55 4D 20 43 4C 43 0D  20 41 44 43 20 53 45 43  |NUM CLC. ADC SEC|
00001FF0: 4E 55 4D 2B 32 0D 20 53  54 41 20 53 45 43 4E 55  |NUM+2. STA SECNU|
00002000: 4D 2B 32 0D 20 42 43 43  20 41 44 44 41 4C 4C 44  |M+2. BCC ADDALLD|
00002010: 4F 4E 45 0D 20 49 4E 43  20 53 45 43 4E 55 4D 2B  |ONE. INC SECNUM+|
00002020: 31 0D 20 42 4E 45 20 41  44 44 41 4C 4C 44 4F 4E  |1. BNE ADDALLDON|
00002030: 45 0D 20 49 4E 43 20 53  45 43 4E 55 4D 0D 41 44  |E. INC SECNUM.AD|
00002040: 44 41 4C 4C 44 4F 4E 45  20 3D 20 2A 0D 20 52 54  |DALLDONE = *. RT|
00002050: 53 0D 3B 0D 2E 45 4E 44  20 43 32 53 45 43 00 00  |S.;..END C2SEC..|
00002060: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002070: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
;BPUT"C2SEC.SRC.;RPUT"C2SEC.SRC.;.;+++++
++++++++++++++++++++++++++++.;+ SECTOR, 
SAT, AND DISK ADDRESS +.;+ ROUTINES.    
                 +.;+ ENTRY POINTS:     
            +.;+* SEC2CYLDCB - CONVERT S
ECNUM TO   +.;+    MSBSEC, LSB, HEAD FOR
MAT.  +.;+* SEC2CYLDCB1 - CONVERT CYLMSB
 AND  +.;+    SECTOR NUMBER TO MSBSEC   
 +.;+    FORMAT WITH OUTPUT IN      +.;+
    CYLMSB.                    +.;+* SEC
TR2CYLINDR - CONVERT SECNUM TO   +.;+   
 CYLMSB, CYLLSB, HEAD,      +.;+    SECT
OR.                    +.;+* SAT2SECTOR 
 - CONVERT SATSEC,     +.;+    SATBYT, A
ND SATBIT TO A    +.;+    SECTOR NUMBER.
             +.;+* SECTOR2SAT - CONVERT 
SECNUM TO   +.;+    SAT ENTRY.  INPUT IS
 X -   +.;+    HI BYTE OF SECNUM, A - MI
D +.;+    BYTE OF SECNUM, AND Y - LOW+.;
+    BYTE OF SECNUM.            +.;+* CY
L2SECTORDCB - CONVERT DCB FORMAT  +.;+  
  DISK ADDRESS TO SECNUM.    +.;+    INP
UT: A - DRIVE-HEAD      +.;+           X
 - MSB CYLINDER    +.;+           Y - LS
B CYLINDER    +.;+* CYLINDER2SECTR - CON
VERT HEAD, CYLLSB+.;+    CYLMSB, & SECTO
R TO SECNUM.+.;+++++++++++++++++++++++++
++++++++.;.;++++++++++++++++++++++++++++
+++++.;+THE FOLLOWING AREAS ARE USED BY+
.;+ THESE SUBROUTINES.            +.;+--
-----------------------------+.;+ SHIFTS
 1 BYTE WORK            +.;+ WORKA  3 BY
TE WORK AREA       +.;+ WORKB  2 BYTE WO
RK AREA       +.;+ WORKC  2 BYTE WORK AR
EA       +.;+ SECNUM 3 BYTE SECTOR NUMBE
R IN+.;+          HI, MED, LO FORMAT   +
.;+ SATSEC 1 BYTE SAT SECTOR      +.;+ S
ATBYT 2 BYTE BYTE OFFSET IN  +.;+       
   SAT SECTOR. HI, LO   +.;+ SATBIT 1 BY
TE BIT MASK OF SAT +.;+          SECTOR 
BYTE          +.;+ CYLMSB 1 BYTE MSB OF 
CYLINDER +.;+ CYLLSB 1 BYTE LSB OF CYLIN
DER +.;+ HEAD   1 BYTE HEAD NUMBER     +
.;+ SECTOR 1 BYTE SECTOR NUMBER   +.;+ S
ECTRK 1 BYTE NUMBER OF       +.;+       
   SECTORS PER TRACK    +.;+ SECCYL 1 BY
TE NUMBER OF       +.;+          SECTORS
 PER CYLINDER +.;+++++++++++++++++++++++
++++++++++.;.;.;++++++++++++++++++++++++
+++++++++.;+ CONVERT RELATIVE SECTOR NUM
BER+.;+ TO CYLINDER, HEAD AND SECTOR. +.
;+                               +.;+ IN
PUT - FIELD SECNUM WHICH    +.;+  CONTAI
NS THE RELATIVE SECTOR.+.;+             
                  +.;+ OUTPUT - FIELDS H
EAD, CYLLSB, +.;+  CYLMSB, AND SECTOR FI
LLED AND+.;+  A - HEAD NUMBER           
   +.;+  Y - CYLINDER LSB             +.
;+  X - SECTOR AND CYL MSB       +.;++++
+++++++++++++++++++++++++++++.;.;.SEC2CY
LDCB JSR SECTR2CYLINDR ;GO CONVERT.SEC2C
YLDCB1 LDX #6 ;PUT CHR IN DCB FORM. LDA 
CYLMSB.SHIFTMSBLEFT ASL A. DEX. BNE SHIF
TMSBLEFT. ORA SECTOR. STA CYLMSB. RTS ;T
IS DONE.;.SECTR2CYLINDR LDA #0 ;ZERO WOR
K, ETC.. STA WORKB. STA WORKB+1. STA WOR
KC+1. STA HEAD. STA CYLMSB. STA CYLLSB. 
LDX #2 ;MOVE SECNUM TO WORK A.MOVESECNUM
2A LDA SECNUM,X. STA WORKA,X. DEX. BPL M
OVESECNUM2A. JSR DEFSET ;GET PTR TO PARM
TAB. LDA PTSCYL,X ;GET SECTOR PER CYL. S
TA WORKC ;TIMES HEX 100. INC WORKB ;MAKE
 COUNTER 256. LDX #9 ;PRIME COUNT DOWN.C
ALCCYLINDER JSR DIVIDESECTOR ;GO SUBTRAC
T. BCC UPDATEOPERANDS. LDA WORKB+1. CLC.
 ADC CYLLSB. STA CYLLSB. LDA WORKB. ADC 
CYLMSB. STA CYLMSB. JMP CALCCYLINDER ;GO
 SEE IF MORE.;.UPDATEOPERANDS LSR WORKB 
;ADJUST ADDER. ROR WORKB+1. LSR WORKC ;S
HIFT DIVISOR. ROR WORKC+1. DEX. BNE CALC
CYLINDER ;TRY SOME MORE. LDA #17 ;GET NU
M SEC PER TRK. STA WORKC+1 ;IN SUBTRACTO
R.CALCULATEHEAD JSR DIVIDESECTOR ;GO SUB
TRACT. BCC SAVESECTORNUM ;GO IF DONE. IN
C HEAD. BNE CALCULATEHEAD.SAVESECTORNUM 
LDA WORKA+2 ;GET SECTOR NUM. STA SECTOR.
 RTS.;.;.;++++++++++++++++++++++++++++++
+++.;+ SUBTRACT WORKC FROM WORK A IF +.;
+ WORKA >= WORKC                +.;+ RET
URN CARRY SET   FOR DIDIT. +.;+ RETURN C
ARRY CLEAR FOR SMALL. +.;+++++++++++++++
++++++++++++++++++.;.DIVIDESECTOR LDA WO
RKA ;CHECK HI SEC BYT. BNE SUBTRACTEM. L
DA WORKA+1 ;CHECK SECOND BYTE. CMP WORKC
 ;FOR <=. BCC DIVIDERETURN ;GO IF TOO SM
ALL. BNE SUBTRACTEM ;GO NOT EQUAL. LDA W
ORKA+2 ;CHECK LOW BYTE. CMP WORKC+1. BCC
 DIVIDERETURN ;TOO SMALL GO ON.SUBTRACTE
M LDA WORKA+2 ;SUBTRACT. SEC. SBC WORKC+
1. STA WORKA+2. LDA WORKA+1. SBC WORKC. 
STA WORKA+1. LDA WORKA. SBC #0. STA WORK
A. SEC.DIVIDERETURN RTS.;.;+++++++++++++
++++++++++++++++++++.;+ CONVERT SATSEC, 
SATBYT, AND   +.;+ SATBIT TO RELATIVE SE
CTOR #.  +.;+                           
    +.;+ INPUT - FIELDS SATSEC, SATBYT +
.;+    AND SATBIT.                +.;+  
                             +.;+ OUTPUT
- RELATIVE SECTOR IN    +.;+ SECNUM.    
                   +.;++++++++++++++++++
+++++++++++++++.;.SAT2SECTOR LDA #0 ;INI
T SECTOR NUM. STA SECNUM. LDX #4 ;NUMBER
 TO SHIFT. LDA SATSEC ;GET FIELD.SHIFTSA
TSECLF ASL A. ROL SECNUM. DEX. BNE SHIFT
SATSECLF. STA SECNUM+1. LDA SATBYT ;GET 
HI. STA WORKA. LDX #3 ;MULTIPLY BY 8. LD
A SATBYT+1 ;NOW LO BYTE OFFSET.SHIFTSATB
YTLF ASL A. ROL WORKA. DEX. BNE SHIFTSAT
BYTLF. STA SECNUM+2. CLC. LDA WORKA ;ADD
 HI BYTE. ADC SECNUM+1. STA SECNUM+1. LD
A SATBIT ;GET THE BIT NUMBER. LDX #0.SHI
FTSATBITLF ASL A ;SHIFT TILL IT GOES. BC
S ADDTOSECNUM ;OUT. INX. BNE SHIFTSATBIT
LF.ADDTOSECNUM TXA ;SET UP FOR ADD. JMP 
ADDBYTE2SECNUM.;CLC.;ADC SECNUM+2 ;ADD T
O TOTAL.;STA SECNUM+2.;BCC SAT2SECRETURN
.;INC SECNUM+1 ;ELSE ADD OVERFLOW.;BNE S
AT2SECRETURN.;INC SECNUM.;SAT2SECRETURN 
RTS ;RETURN.;.;+++++++++++++++++++++++++
++++++++.;+ CONVERT SECTOR NUMBER TO SAT
  +.;+ ENTRY.                        +.;
+                               +.;+ INP
UT: A-MIDDLE BYTE OF SECNUM+.;+        X
-HI BYTE OF SECNUM    +.;+        Y-LO B
YTE OF SECNUM    +.;+                   
            +.;+                        
       +.;+ OUTPUT: SAT SECTOR, BYTE, AN
D +.;+         BIT IN BYTE.          +.;
+ SATSEC - SECTOR NUMBER OF SATE+.;+ SAT
BYT - BYTE OF SATE         +.;+ SATBIT -
 BIT OF BYTE          +.;+++++++++++++++
++++++++++++++++++.;.SECTOR2SAT STA SATS
EC ;A HAS MIDDLE BYTE. AND #$0F ;ISOLATE
 LOW 12 BITS FOR  . STA SATBYT ;FOR SATB
YT. TXA ;GET HI BYTE OF SECNUM. LDX #4 ;
NEED TO SHIFT FOR SATSEC.DIVIDEBY4096 LS
R A ;SATSEC = INT(SECNUM/4096). ROR SATS
EC. DEX. BNE DIVIDEBY4096 ;DO ALL 4 SHIF
TS. TYA ;GET LOW BYTE OF SECNUM. STA SAT
BYT+1 ;PUT IN OFFSET. AND #$07 ;ISOLATE 
THE BIT NUMBER. TAX ;NOW PUT BIT IN ITS 
PLACE. LDA #$80 ;PRIME BIT.SHIFTSEC DEX 
;CHECK IF THRU. BMI SAVESATBIT. LSR A. B
NE SHIFTSEC.SAVESATBIT STA SATBIT ;NOW H
AVE BIT. LDX #3 ;NOW DIVIDE BYTE OFFSET 
BY 8.DIVIDSATBYTBY8 LSR SATBYT. ROR SATB
YT+1. DEX. BNE DIVIDSATBYTBY8. RTS.;.;++
+++++++++++++++++++++++++++++++.;+ CONVE
RT CYLINDER, HEAD, SECTOR+.;+ TO SECTOR 
NUMBER.             +.;+                
               +.;+ THERE ARE 2 ENTRIES 
TO THIS   +.;+ SUBROUTINE.              
     +.;+ CYL2SECTORDCB - INPUT IS AS FO
LLOWS  +.;+     A - DRIVE-HEAD BYTE     
  +.;+     X - MSB-SECTOR            +.;
+     Y - LSB CYLINDER          +.;+    
                           +.;+ CYLINDER
2SECTR - THE FOLLOWING FIELDS +.;+     M
UST BE INITIALIZED BEFORE+.;+     CALLIN
G THIS ENTRY.       +.;+  HEAD, SECTOR, 
CYLLSB, CYLMSB +.;+                     
          +.;+++++++++++++++++++++++++++
++++++.;.CYL2SECTORDCB STY CYLLSB ;PUT I
N LSB OF CYLINDER. AND #$0F ;ISOLATE JUS
T THE HEAD. STA HEAD. TXA ;GET MSB AND S
ECTOR. AND #$1F ;ISOLATE SECTOR NUMBER. 
STA SECTOR. TXA ;NOW HANDLE MSB OF CYLIN
DER. LDX #6 ;NUMBER OF SHIFTS.SHIFTDOWNM
SB LSR A. DEX. BNE SHIFTDOWNMSB. STA CYL
MSB ;PUT IT AWAY.;.CYLINDER2SECTR LDA #0
 ;CLEAR THE RESULT FIELD. STA SECNUM. ST
A SECNUM+1. STA SECNUM+2. LDY #8 ;PRIME 
SHIFTS. JSR DEFSET ;GET PARM TAB OFFSET.
 LDA PTSCYL,X ;AND SECTOR PER CYL. STA W
ORKB.MULIPLYCYLINDR = * ;CLEAR CARRY. LD
A CYLLSB ;GET LOW CYL NUMBER. STA WORKA+
2. LDA CYLMSB ;GET HIGH CYL NUMBER. STA 
WORKA+1. LDA #0 ;CLEAR NEXT WORK. STA WO
RKA. DEY. ASL WORKB ;SHIFT SEC/CYL. BCC 
ANYMORESHIFTS. TYA ;MOVE TO X. TAX. BEQ 
ADDTOSECNUM2. CLC.SHIFTWORKAL ASL WORKA+
2. ROL WORKA+1. ROL WORKA. DEX. BNE SHIF
TWORKAL.ADDTOSECNUM2 LDX #2. CLC.ADDTOSE
CNUMLP LDA SECNUM,X. ADC WORKA,X. STA SE
CNUM,X. DEX. BPL ADDTOSECNUMLP.ANYMORESH
IFTS CPY #0 ;ANY MORE?. BNE MULIPLYCYLIN
DR.;+ ADD IN HEAD X SECTOR PER TRK. LDX 
HEAD ;GET COUNTER. BEQ ADDSECT2SECNUM ;G
O IF HEAD 0.ADDHEADXSECTRK LDA #17 ;GET 
SECTORS PER TRACK. JSR ADDBYTE2SECNUM ;G
O ADD TO TOTAL. DEX. BNE ADDHEADXSECTRK.
;+ ADD THE SECTOR.ADDSECT2SECNUM LDA SEC
TOR. JSR ADDBYTE2SECNUM. LDA SECNUM. LDX
 SECNUM+1. LDY SECNUM+2. RTS.ADDBYTE2SEC
NUM CLC. ADC SECNUM+2. STA SECNUM+2. BCC
 ADDALLDONE. INC SECNUM+1. BNE ADDALLDON
E. INC SECNUM.ADDALLDONE = *. RTS.;..END
 C2SEC..................................
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL