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 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL