FORMAT.SRC
FILE INFORMATION
FILENAME(S): FORMAT.SRC
FILE TYPE(S): SEQ
FILE SIZE: 10.4K
FIRST SEEN: 2025-11-30 16:59:23
APPEARS ON: 1 disk(s)
FILE HASH
4de9f235a8b4d32313078476a76ff961dba50ab4d1a021dce0c90f55268f06f7
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| 64HDPROJ | FORMAT.SRC | SEQ | High Voltage Complete C64 Collection | 15 | 2 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B 42 50 55 54 22 46 4F 52 4D 41 54 2E 53 52 43 |;BPUT"FORMAT.SRC| 00000010: 22 0D 3B 52 50 55 54 22 46 4F 52 4D 41 54 2E 53 |".;RPUT"FORMAT.S| 00000020: 52 43 22 0D 3B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |RC".;+++++++++++| 00000030: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 00000040: 2B 2B 2B 2B 2B 2B 0D 3B 2B 20 20 49 4E 49 54 49 |++++++.;+ INITI| 00000050: 41 4C 49 5A 45 20 54 48 45 20 48 41 52 44 20 44 |ALIZE THE HARD D| 00000060: 49 53 4B 20 20 20 20 20 2B 0D 3B 2B 20 20 20 20 |ISK +.;+ | 00000070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000080: 20 20 20 20 20 20 20 20 20 20 20 2B 0D 3B 2B 20 | +.;+ | 00000090: 49 4E 54 45 52 46 41 43 45 53 20 57 49 54 48 20 |INTERFACES WITH | 000000A0: 54 48 45 20 42 49 4F 53 20 46 4F 52 20 20 2B 0D |THE BIOS FOR +.| 000000B0: 3B 2B 20 48 41 52 44 20 44 52 49 56 45 2E 2E 2E |;+ HARD DRIVE...| 000000C0: 2E 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000000D0: 20 2B 0D 3B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B | +.;++++++++++++| 000000E0: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 000000F0: 2B 2B 2B 2B 2B 0D 3B 0D 52 45 41 44 20 3D 20 24 |+++++.;.READ = $| 00000100: 37 30 30 30 20 3B 45 51 55 41 54 45 53 20 46 4F |7000 ;EQUATES FO| 00000110: 52 20 42 49 4F 53 0D 57 52 49 54 45 20 3D 20 52 |R BIOS.WRITE = R| 00000120: 45 41 44 2B 33 0D 52 45 53 45 54 20 3D 20 52 45 |EAD+3.RESET = RE| 00000130: 41 44 2B 36 0D 53 45 54 50 52 4D 20 3D 20 52 45 |AD+6.SETPRM = RE| 00000140: 41 44 2B 39 0D 52 45 43 41 4C 20 3D 20 52 45 41 |AD+9.RECAL = REA| 00000150: 44 2B 31 32 0D 53 45 45 4B 20 3D 20 52 45 41 44 |D+12.SEEK = READ| 00000160: 2B 31 35 0D 54 44 52 45 44 59 20 3D 20 52 45 41 |+15.TDREDY = REA| 00000170: 44 2B 31 38 20 3B 54 45 53 54 20 44 52 49 56 45 |D+18 ;TEST DRIVE| 00000180: 20 52 45 41 44 59 0D 53 42 44 49 41 47 20 3D 20 | READY.SBDIAG = | 00000190: 52 45 41 44 2B 32 31 20 3B 53 45 43 54 4F 52 20 |READ+21 ;SECTOR | 000001A0: 42 55 46 20 44 49 41 47 0D 44 52 44 49 41 47 20 |BUF DIAG.DRDIAG | 000001B0: 3D 20 52 45 41 44 2B 32 34 20 3B 44 52 49 56 45 |= READ+24 ;DRIVE| 000001C0: 20 44 49 41 47 53 0D 43 54 44 49 41 47 20 3D 20 | DIAGS.CTDIAG = | 000001D0: 52 45 41 44 2B 32 37 20 3B 43 4F 4E 54 52 4F 4C |READ+27 ;CONTROL| 000001E0: 4C 45 52 20 44 49 41 47 53 0D 46 42 41 44 54 4B |LER DIAGS.FBADTK| 000001F0: 20 3D 20 52 45 41 44 2B 33 30 20 3B 46 4F 52 4D | = READ+30 ;FORM| 00000200: 41 54 20 42 41 44 20 54 52 4B 0D 46 4D 54 54 52 |AT BAD TRK.FMTTR| 00000210: 4B 20 3D 20 52 45 41 44 2B 33 33 20 3B 46 4F 52 |K = READ+33 ;FOR| 00000220: 4D 41 54 20 54 52 41 43 4B 0D 46 4D 54 44 52 56 |MAT TRACK.FMTDRV| 00000230: 20 3D 20 52 45 41 44 2B 33 36 20 3B 46 4F 52 4D | = READ+36 ;FORM| 00000240: 41 54 20 44 52 49 56 45 0D 52 45 54 50 52 4D 20 |AT DRIVE.RETPRM | 00000250: 3D 20 52 45 41 44 2B 33 39 20 3B 52 45 54 55 52 |= READ+39 ;RETUR| 00000260: 4E 20 50 41 52 4D 53 0D 20 3B 49 4E 50 55 54 20 |N PARMS. ;INPUT | 00000270: 2D 20 41 20 3D 20 44 52 49 56 45 20 4E 55 4D 42 |- A = DRIVE NUMB| 00000280: 45 52 0D 20 3B 4F 55 54 50 55 54 20 2D 20 41 20 |ER. ;OUTPUT - A | 00000290: 3D 20 23 20 48 45 41 44 53 0D 20 3B 20 20 20 20 |= # HEADS. ; | 000002A0: 20 20 20 20 20 58 20 3D 20 4D 53 42 20 23 43 59 | X = MSB #CY| 000002B0: 4C 53 0D 20 3B 20 20 20 20 20 20 20 20 20 59 20 |LS. ; Y | 000002C0: 3D 20 4C 53 42 20 23 43 59 4C 53 0D 52 44 4C 4F |= LSB #CYLS.RDLO| 000002D0: 4E 47 20 3D 20 52 45 41 44 2B 34 32 0D 52 45 41 |NG = READ+42.REA| 000002E0: 44 53 42 20 3D 20 52 45 41 44 2B 34 35 0D 57 52 |DSB = READ+45.WR| 000002F0: 4C 4F 4E 47 20 3D 20 52 45 41 44 2B 34 38 0D 57 |LONG = READ+48.W| 00000300: 52 49 54 53 42 20 3D 20 52 45 41 44 2B 35 31 0D |RITSB = READ+51.| 00000310: 56 45 52 49 46 59 20 3D 20 52 45 41 44 2B 35 34 |VERIFY = READ+54| 00000320: 0D 44 43 42 50 54 52 20 3D 20 52 45 41 44 2B 35 |.DCBPTR = READ+5| 00000330: 37 20 3B 50 4F 49 4E 54 45 52 20 54 4F 20 44 43 |7 ;POINTER TO DC| 00000340: 42 0D 2A 20 3D 20 24 36 30 30 30 0D 53 54 41 52 |B.* = $6000.STAR| 00000350: 54 20 3D 20 2A 20 3B 42 45 47 49 4E 20 46 4F 52 |T = * ;BEGIN FOR| 00000360: 4D 41 54 0D 20 4C 44 41 20 23 30 20 3B 43 4C 45 |MAT. LDA #0 ;CLE| 00000370: 41 52 20 54 48 45 20 42 55 46 46 45 52 53 0D 20 |AR THE BUFFERS. | 00000380: 54 41 59 0D 43 4C 45 41 52 42 41 44 53 45 43 54 |TAY.CLEARBADSECT| 00000390: 4F 52 20 53 54 41 20 42 41 44 53 45 43 54 4F 52 |OR STA BADSECTOR| 000003A0: 53 2C 59 0D 20 53 54 41 20 42 41 44 53 45 43 54 |S,Y. STA BADSECT| 000003B0: 4F 52 53 2B 32 35 36 2C 59 0D 20 53 54 41 20 42 |ORS+256,Y. STA B| 000003C0: 41 44 53 45 43 54 4F 52 53 2B 35 31 32 2C 59 0D |ADSECTORS+512,Y.| 000003D0: 20 53 54 41 20 42 41 44 53 45 43 54 4F 52 53 2B | STA BADSECTORS+| 000003E0: 37 36 38 2C 59 0D 20 53 54 41 20 52 44 42 55 46 |768,Y. STA RDBUF| 000003F0: 2C 59 0D 20 53 54 41 20 52 44 42 55 46 2B 32 35 |,Y. STA RDBUF+25| 00000400: 36 2C 59 0D 20 53 54 41 20 57 52 54 42 55 46 2C |6,Y. STA WRTBUF,| 00000410: 59 0D 20 53 54 41 20 57 52 54 42 55 46 2B 32 35 |Y. STA WRTBUF+25| 00000420: 36 2C 59 0D 20 49 4E 59 0D 20 42 4E 45 20 43 4C |6,Y. INY. BNE CL| 00000430: 45 41 52 42 41 44 53 45 43 54 4F 52 0D 20 4C 44 |EARBADSECTOR. LD| 00000440: 41 20 23 34 20 3B 32 20 54 49 4D 45 53 20 23 20 |A #4 ;2 TIMES # | 00000450: 53 45 43 54 4F 52 53 20 46 4F 52 20 42 41 44 20 |SECTORS FOR BAD | 00000460: 53 45 43 54 4F 52 53 0D 20 53 54 41 20 42 41 44 |SECTORS. STA BAD| 00000470: 53 45 43 54 4F 52 43 54 52 0D 20 4C 44 41 20 23 |SECTORCTR. LDA #| 00000480: 3C 48 45 41 44 49 4E 47 4D 53 47 20 3B 43 4C 45 |<HEADINGMSG ;CLE| 00000490: 41 52 20 53 43 52 45 45 4E 2C 45 54 43 0D 20 4A |AR SCREEN,ETC. J| 000004A0: 53 52 20 57 52 49 54 45 4F 55 54 41 4D 53 47 0D |SR WRITEOUTAMSG.| 000004B0: 20 4C 44 41 20 44 43 42 50 54 52 0D 20 53 54 41 | LDA DCBPTR. STA| 000004C0: 20 50 54 52 31 0D 20 53 54 41 20 50 54 52 58 0D | PTR1. STA PTRX.| 000004D0: 20 53 54 41 20 44 43 42 50 54 52 46 4F 52 47 45 | STA DCBPTRFORGE| 000004E0: 54 0D 20 4C 44 41 20 44 43 42 50 54 52 2B 31 0D |T. LDA DCBPTR+1.| 000004F0: 20 53 54 41 20 50 54 52 32 20 3B 41 44 44 52 45 | STA PTR2 ;ADDRE| 00000500: 53 53 20 54 48 45 20 44 43 42 0D 20 53 54 41 20 |SS THE DCB. STA | 00000510: 50 54 52 58 2B 31 0D 20 53 54 41 20 44 43 42 50 |PTRX+1. STA DCBP| 00000520: 54 52 46 4F 52 47 45 54 2B 31 0D 20 4C 44 41 20 |TRFORGET+1. LDA | 00000530: 23 30 20 3B 53 45 54 20 55 50 20 46 4F 52 20 44 |#0 ;SET UP FOR D| 00000540: 52 49 56 45 20 30 0D 20 4A 53 52 20 50 55 54 44 |RIVE 0. JSR PUTD| 00000550: 43 42 44 52 49 56 45 20 3B 53 45 54 20 55 50 20 |CBDRIVE ;SET UP | 00000560: 44 52 49 56 45 20 30 0D 20 4A 53 52 20 52 45 53 |DRIVE 0. JSR RES| 00000570: 45 54 0D 20 42 43 43 20 52 45 53 45 54 49 53 4F |ET. BCC RESETISO| 00000580: 4B 20 3B 47 4F 20 49 46 20 4E 4F 20 45 52 52 4F |K ;GO IF NO ERRO| 00000590: 52 0D 20 4C 44 41 20 23 3C 52 45 53 45 54 45 52 |R. LDA #<RESETER| 000005A0: 52 4F 52 4D 53 47 20 3B 49 53 53 55 45 20 4D 53 |RORMSG ;ISSUE MS| 000005B0: 47 0D 20 4A 53 52 20 57 52 49 54 45 4F 55 54 41 |G. JSR WRITEOUTA| 000005C0: 4D 53 47 0D 20 42 52 4B 0D 52 45 53 45 54 49 53 |MSG. BRK.RESETIS| 000005D0: 4F 4B 20 4C 44 41 20 23 30 20 3B 52 45 53 54 4F |OK LDA #0 ;RESTO| 000005E0: 52 45 20 44 52 49 56 45 20 30 0D 20 4A 53 52 20 |RE DRIVE 0. JSR | 000005F0: 50 55 54 44 43 42 44 52 49 56 45 0D 20 4A 53 52 |PUTDCBDRIVE. JSR| 00000600: 20 50 55 54 44 43 42 4D 53 42 53 45 43 54 52 20 | PUTDCBMSBSECTR | 00000610: 3B 53 45 54 20 53 45 43 54 4F 52 0D 20 4A 53 52 |;SET SECTOR. JSR| 00000620: 20 50 55 54 44 43 42 43 59 4C 4C 53 42 20 3B 41 | PUTDCBCYLLSB ;A| 00000630: 4E 44 20 43 59 4C 0D 20 4C 44 41 20 23 31 31 20 |ND CYL. LDA #11 | 00000640: 3B 49 4E 54 45 52 4C 45 41 56 45 2C 20 54 45 53 |;INTERLEAVE, TES| 00000650: 54 20 53 48 4F 57 53 20 31 31 20 47 4F 4F 44 0D |T SHOWS 11 GOOD.| 00000660: 20 4A 53 52 20 50 55 54 44 43 42 4E 55 4D 53 45 | JSR PUTDCBNUMSE| 00000670: 43 53 0D 20 4C 44 41 20 23 3C 42 55 46 46 45 52 |CS. LDA #<BUFFER| 00000680: 0D 20 4A 53 52 20 50 55 54 44 43 42 4C 4F 42 55 |. JSR PUTDCBLOBU| 00000690: 46 50 54 52 0D 20 4C 44 41 20 23 3E 42 55 46 46 |FPTR. LDA #>BUFF| 000006A0: 45 52 0D 20 4A 53 52 20 50 55 54 44 43 42 48 49 |ER. JSR PUTDCBHI| 000006B0: 42 55 46 50 54 52 0D 20 4A 53 52 20 52 45 54 50 |BUFPTR. JSR RETP| 000006C0: 52 4D 20 3B 47 45 54 20 54 48 45 20 50 41 52 4D |RM ;GET THE PARM| 000006D0: 53 0D 20 44 45 59 20 3B 42 41 43 4B 20 44 4F 57 |S. DEY ;BACK DOW| 000006E0: 4E 20 43 59 4C 49 4E 44 45 52 53 20 42 59 20 31 |N CYLINDERS BY 1| 000006F0: 0D 20 42 4E 45 20 53 41 56 45 54 48 45 50 41 52 |. BNE SAVETHEPAR| 00000700: 4D 53 0D 20 44 45 58 0D 53 41 56 45 54 48 45 50 |MS. DEX.SAVETHEP| 00000710: 41 52 4D 53 20 53 54 58 20 43 59 4C 4D 53 42 0D |ARMS STX CYLMSB.| 00000720: 20 53 54 58 20 4E 55 4D 43 59 4C 49 4E 44 45 52 | STX NUMCYLINDER| 00000730: 53 20 3B 53 41 56 45 0D 20 53 54 59 20 4E 55 4D |S ;SAVE. STY NUM| 00000740: 43 59 4C 49 4E 44 45 52 53 2B 31 0D 20 53 54 41 |CYLINDERS+1. STA| 00000750: 20 4E 55 4D 42 45 52 4F 46 48 45 41 44 53 0D 20 | NUMBEROFHEADS. | 00000760: 53 54 59 20 43 59 4C 4C 53 42 0D 20 4C 44 41 20 |STY CYLLSB. LDA | 00000770: 23 31 36 20 3B 53 45 54 20 53 45 43 54 4F 52 20 |#16 ;SET SECTOR | 00000780: 4E 55 4D 42 45 52 20 54 4F 20 4D 41 58 0D 20 53 |NUMBER TO MAX. S| 00000790: 54 41 20 53 45 43 54 4F 52 0D 20 4A 53 52 20 43 |TA SECTOR. JSR C| 000007A0: 59 4C 49 4E 44 45 52 32 53 45 43 54 52 20 3B 43 |YLINDER2SECTR ;C| 000007B0: 4F 4E 56 45 52 54 0D 20 4C 44 58 20 53 45 43 4E |ONVERT. LDX SECN| 000007C0: 55 4D 20 3B 4D 4F 56 45 20 41 4E 44 20 50 52 49 |UM ;MOVE AND PRI| 000007D0: 4D 45 0D 20 4C 44 41 20 53 45 43 4E 55 4D 2B 31 |ME. LDA SECNUM+1| 000007E0: 20 3B 46 4F 52 20 53 45 43 54 4F 52 20 54 4F 20 | ;FOR SECTOR TO | 000007F0: 53 41 54 0D 20 4C 44 59 20 53 45 43 4E 55 4D 2B |SAT. LDY SECNUM+| 00000800: 32 20 3B 43 4F 4E 56 45 52 53 49 4F 4E 0D 20 53 |2 ;CONVERSION. S| 00000810: 54 58 20 54 4F 54 41 4C 53 45 43 54 4F 52 53 0D |TX TOTALSECTORS.| 00000820: 20 53 54 41 20 54 4F 54 41 4C 53 45 43 54 4F 52 | STA TOTALSECTOR| 00000830: 53 2B 31 0D 20 53 54 59 20 54 4F 54 41 4C 53 45 |S+1. STY TOTALSE| 00000840: 43 54 4F 52 53 2B 32 0D 20 4A 53 52 20 53 45 43 |CTORS+2. JSR SEC| 00000850: 54 4F 52 32 53 41 54 20 3B 47 4F 20 43 4F 4E 56 |TOR2SAT ;GO CONV| 00000860: 45 52 54 0D 20 4C 44 41 20 53 41 54 53 45 43 20 |ERT. LDA SATSEC | 00000870: 3B 53 41 56 45 20 46 4F 52 20 4C 41 54 45 52 0D |;SAVE FOR LATER.| 00000880: 20 53 54 41 20 4C 41 53 54 53 41 54 53 45 43 54 | STA LASTSATSECT| 00000890: 4F 52 0D 20 4C 44 41 20 53 41 54 42 59 54 0D 20 |OR. LDA SATBYT. | 000008A0: 53 54 41 20 4C 41 53 54 53 41 54 42 59 54 45 0D |STA LASTSATBYTE.| 000008B0: 20 4C 44 41 20 53 41 54 42 59 54 2B 31 0D 20 53 | LDA SATBYT+1. S| 000008C0: 54 41 20 4C 41 53 54 53 41 54 42 59 54 45 2B 31 |TA LASTSATBYTE+1| 000008D0: 0D 20 4C 44 41 20 53 41 54 42 49 54 0D 20 53 54 |. LDA SATBIT. ST| 000008E0: 41 20 4C 41 53 54 53 41 54 42 49 54 0D 43 48 45 |A LASTSATBIT.CHE| 000008F0: 43 4B 4C 4F 57 4C 45 56 45 4C 20 4C 44 41 20 23 |CKLOWLEVEL LDA #| 00000900: 3C 4C 4F 57 4C 45 56 45 4C 4D 53 47 20 3B 41 53 |<LOWLEVELMSG ;AS| 00000910: 4B 20 41 42 4F 55 54 20 4C 4F 4C 45 56 45 4C 0D |K ABOUT LOLEVEL.| 00000920: 20 4A 53 52 20 57 52 49 54 45 4F 55 54 41 4D 53 | JSR WRITEOUTAMS| 00000930: 47 0D 4C 4F 57 4C 45 56 45 4C 41 4E 53 57 45 52 |G.LOWLEVELANSWER| 00000940: 20 4A 53 52 20 24 46 46 45 34 0D 20 4A 53 52 20 | JSR $FFE4. JSR | 00000950: 24 46 46 44 32 0D 20 43 4D 50 20 23 27 4E 27 20 |$FFD2. CMP #'N' | 00000960: 3B 4E 4F 20 4C 4F 57 20 4C 45 56 45 4C 0D 20 42 |;NO LOW LEVEL. B| 00000970: 45 51 20 53 45 54 55 50 43 4F 55 4E 54 45 52 53 |EQ SETUPCOUNTERS| 00000980: 0D 20 43 4D 50 20 23 27 59 27 20 3B 44 4F 20 49 |. CMP #'Y' ;DO I| 00000990: 54 3F 0D 20 42 4E 45 20 4C 4F 57 4C 45 56 45 4C |T?. BNE LOWLEVEL| 000009A0: 41 4E 53 57 45 52 0D 20 4A 53 52 20 46 4D 54 44 |ANSWER. JSR FMTD| 000009B0: 52 56 20 3B 4C 4F 57 20 4C 45 56 45 4C 20 49 54 |RV ;LOW LEVEL IT| 000009C0: 0D 20 42 43 43 20 53 45 54 55 50 43 4F 55 4E 54 |. BCC SETUPCOUNT| 000009D0: 45 52 53 0D 20 4C 44 41 20 23 3C 4C 4F 57 4C 45 |ERS. LDA #<LOWLE| 000009E0: 56 45 4C 45 52 52 4D 53 47 20 3B 45 52 52 4F 52 |VELERRMSG ;ERROR| 000009F0: 20 4D 53 47 0D 20 4A 53 52 20 57 52 49 54 45 4F | MSG. JSR WRITEO| 00000A00: 55 54 41 4D 53 47 0D 20 42 52 4B 0D 53 45 54 55 |UTAMSG. BRK.SETU| 00000A10: 50 43 4F 55 4E 54 45 52 53 20 3D 20 2A 0D 20 4C |PCOUNTERS = *. L| 00000A20: 44 41 20 23 30 0D 20 53 54 41 20 43 59 4C 49 4E |DA #0. STA CYLIN| 00000A30: 44 45 52 43 4F 55 4E 54 52 20 3B 43 4C 45 41 52 |DERCOUNTR ;CLEAR| 00000A40: 20 43 4F 55 4E 54 45 52 53 0D 20 53 54 41 20 43 | COUNTERS. STA C| 00000A50: 59 4C 49 4E 44 45 52 43 4F 55 4E 54 52 2B 31 0D |YLINDERCOUNTR+1.| 00000A60: 20 53 54 41 20 48 45 41 44 43 4F 55 4E 54 45 52 | STA HEADCOUNTER| 00000A70: 0D 20 53 54 41 20 53 45 43 54 4F 52 43 4F 55 4E |. STA SECTORCOUN| 00000A80: 54 45 52 0D 20 4C 44 58 20 23 30 0D 46 49 4C 4C |TER. LDX #0.FILL| 00000A90: 42 55 46 46 45 52 20 54 58 41 0D 20 53 54 41 20 |BUFFER TXA. STA | 00000AA0: 57 52 54 42 55 46 2C 58 0D 20 53 54 41 20 57 52 |WRTBUF,X. STA WR| 00000AB0: 54 42 55 46 2B 32 35 36 2C 58 0D 20 49 4E 58 0D |TBUF+256,X. INX.| 00000AC0: 20 42 4E 45 20 46 49 4C 4C 42 55 46 46 45 52 0D | BNE FILLBUFFER.| 00000AD0: 20 4C 44 41 20 23 31 34 37 0D 20 4A 53 52 20 24 | LDA #147. JSR $| 00000AE0: 46 46 44 32 0D 20 4C 44 41 20 23 3C 49 4E 54 45 |FFD2. LDA #<INTE| 00000AF0: 4E 53 49 56 45 4D 53 47 20 3B 57 48 41 54 20 4B |NSIVEMSG ;WHAT K| 00000B00: 49 4E 44 3F 0D 20 4A 53 52 20 57 52 49 54 45 4F |IND?. JSR WRITEO| 00000B10: 55 54 41 4D 53 47 0D 49 4E 54 45 4E 53 45 41 4E |UTAMSG.INTENSEAN| 00000B20: 53 57 45 52 20 4A 53 52 20 24 46 46 45 34 20 3B |SWER JSR $FFE4 ;| 00000B30: 47 45 54 20 41 4E 53 57 45 52 0D 20 43 4D 50 20 |GET ANSWER. CMP | 00000B40: 23 27 4E 27 20 3B 4E 4F 54 20 49 4E 54 45 4E 53 |#'N' ;NOT INTENS| 00000B50: 49 56 45 0D 20 42 45 51 20 4E 4F 54 49 4E 54 45 |IVE. BEQ NOTINTE| 00000B60: 4E 53 49 56 45 0D 20 43 4D 50 20 23 27 59 27 20 |NSIVE. CMP #'Y' | 00000B70: 3B 59 45 53 3F 0D 20 42 4E 45 20 49 4E 54 45 4E |;YES?. BNE INTEN| 00000B80: 53 45 41 4E 53 57 45 52 0D 20 4C 44 58 20 23 30 |SEANSWER. LDX #0| 00000B90: 0D 20 2E 42 59 54 20 24 32 43 0D 4E 4F 54 49 4E |. .BYT $2C.NOTIN| 00000BA0: 54 45 4E 53 49 56 45 20 4C 44 58 20 23 24 46 46 |TENSIVE LDX #$FF| 00000BB0: 0D 20 53 54 58 20 49 4E 54 45 4E 53 49 56 45 46 |. STX INTENSIVEF| 00000BC0: 4C 41 47 20 3B 53 45 54 20 4D 4F 44 45 20 46 4C |LAG ;SET MODE FL| 00000BD0: 41 47 0D 20 4A 53 52 20 24 46 46 44 32 0D 46 4F |AG. JSR $FFD2.FO| 00000BE0: 52 4D 41 54 44 52 49 56 45 20 4C 44 41 20 23 35 |RMATDRIVE LDA #5| 00000BF0: 20 3B 43 4C 45 41 52 20 52 45 54 52 59 20 43 4F | ;CLEAR RETRY CO| 00000C00: 55 4E 54 45 52 0D 20 53 54 41 20 57 52 54 52 45 |UNTER. STA WRTRE| 00000C10: 54 52 59 43 4F 55 4E 54 52 0D 20 53 54 41 20 52 |TRYCOUNTR. STA R| 00000C20: 44 52 45 54 52 59 43 4F 55 4E 54 45 52 0D 20 4C |DRETRYCOUNTER. L| 00000C30: 44 41 20 43 59 4C 49 4E 44 45 52 43 4F 55 4E 54 |DA CYLINDERCOUNT| 00000C40: 52 2B 31 0D 20 4A 53 52 20 48 45 58 54 4F 41 53 |R+1. JSR HEXTOAS| 00000C50: 43 49 49 20 3B 4D 41 4B 45 20 50 52 49 4E 54 41 |CII ;MAKE PRINTA| 00000C60: 42 4C 45 0D 20 53 54 41 20 24 30 34 31 45 0D 20 |BLE. STA $041E. | 00000C70: 53 54 58 20 24 30 34 31 46 0D 20 4C 44 41 20 43 |STX $041F. LDA C| 00000C80: 59 4C 49 4E 44 45 52 43 4F 55 4E 54 52 0D 20 4A |YLINDERCOUNTR. J| 00000C90: 53 52 20 48 45 58 54 4F 41 53 43 49 49 0D 20 53 |SR HEXTOASCII. S| 00000CA0: 54 41 20 24 30 34 32 30 0D 20 53 54 58 20 24 30 |TA $0420. STX $0| 00000CB0: 34 32 31 0D 20 4C 44 41 20 23 33 32 0D 20 53 54 |421. LDA #32. ST| 00000CC0: 41 20 24 30 34 32 32 0D 20 4C 44 41 20 48 45 41 |A $0422. LDA HEA| 00000CD0: 44 43 4F 55 4E 54 45 52 0D 20 4A 53 52 20 48 45 |DCOUNTER. JSR HE| 00000CE0: 58 54 4F 41 53 43 49 49 0D 20 53 54 41 20 24 30 |XTOASCII. STA $0| 00000CF0: 34 32 33 0D 20 53 54 58 20 24 30 34 32 34 0D 20 |423. STX $0424. | 00000D00: 4C 44 41 20 23 33 32 0D 20 53 54 41 20 24 30 34 |LDA #32. STA $04| 00000D10: 32 35 0D 20 4C 44 41 20 53 45 43 54 4F 52 43 4F |25. LDA SECTORCO| 00000D20: 55 4E 54 45 52 0D 20 4A 53 52 20 48 45 58 54 4F |UNTER. JSR HEXTO| 00000D30: 41 53 43 49 49 0D 20 53 54 41 20 24 30 34 32 36 |ASCII. STA $0426| 00000D40: 0D 20 53 54 58 20 24 30 34 32 37 0D 20 4A 53 52 |. STX $0427. JSR| 00000D50: 20 53 45 54 55 50 44 43 42 20 3B 53 45 54 20 55 | SETUPDCB ;SET U| 00000D60: 50 20 44 43 42 0D 20 4C 44 41 20 49 4E 54 45 4E |P DCB. LDA INTEN| 00000D70: 53 49 56 45 46 4C 41 47 20 3B 43 48 45 43 4B 20 |SIVEFLAG ;CHECK | 00000D80: 46 4F 52 20 49 4E 54 45 4E 53 45 20 46 4F 52 4D |FOR INTENSE FORM| 00000D90: 41 54 0D 20 42 4E 45 20 42 59 50 41 53 53 57 52 |AT. BNE BYPASSWR| 00000DA0: 49 54 45 20 3B 42 59 50 41 53 53 20 57 52 49 54 |ITE ;BYPASS WRIT| 00000DB0: 45 0D 20 4C 44 41 20 23 3C 57 52 54 42 55 46 0D |E. LDA #<WRTBUF.| 00000DC0: 20 4A 53 52 20 50 55 54 44 43 42 4C 4F 42 55 46 | JSR PUTDCBLOBUF| 00000DD0: 50 54 52 0D 20 4C 44 41 20 23 3E 57 52 54 42 55 |PTR. LDA #>WRTBU| 00000DE0: 46 0D 20 4A 53 52 20 50 55 54 44 43 42 48 49 42 |F. JSR PUTDCBHIB| 00000DF0: 55 46 50 54 52 0D 57 52 49 54 45 41 53 45 43 54 |UFPTR.WRITEASECT| 00000E00: 4F 52 20 4A 53 52 20 57 52 49 54 45 20 3B 47 4F |OR JSR WRITE ;GO| 00000E10: 20 57 52 49 54 45 20 41 20 42 4C 4F 43 4B 0D 20 | WRITE A BLOCK. | 00000E20: 42 43 43 20 42 59 50 41 53 53 57 52 49 54 45 0D |BCC BYPASSWRITE.| 00000E30: 20 4A 53 52 20 52 45 41 44 54 48 45 53 45 4E 53 | JSR READTHESENS| 00000E40: 45 20 3B 52 45 54 52 49 45 56 45 20 53 45 4E 53 |E ;RETRIEVE SENS| 00000E50: 45 0D 20 4A 53 52 20 57 52 49 54 45 4F 55 54 53 |E. JSR WRITEOUTS| 00000E60: 45 4E 53 45 0D 20 4A 53 52 20 52 45 53 45 54 46 |ENSE. JSR RESETF| 00000E70: 4F 52 52 45 54 52 59 20 3B 20 53 45 54 20 55 50 |ORRETRY ; SET UP| 00000E80: 20 46 4F 52 20 52 45 54 52 59 0D 20 44 45 43 20 | FOR RETRY. DEC | 00000E90: 57 52 54 52 45 54 52 59 43 4F 55 4E 54 52 0D 20 |WRTRETRYCOUNTR. | 00000EA0: 42 4E 45 20 57 52 49 54 45 41 53 45 43 54 4F 52 |BNE WRITEASECTOR| 00000EB0: 0D 20 4C 44 41 20 23 3C 57 52 49 54 45 45 52 52 |. LDA #<WRITEERR| 00000EC0: 4F 52 4D 53 47 20 3B 57 52 49 54 45 20 45 52 52 |ORMSG ;WRITE ERR| 00000ED0: 4F 52 0D 20 4A 53 52 20 57 52 49 54 45 4F 55 54 |OR. JSR WRITEOUT| 00000EE0: 41 4D 53 47 0D 20 4A 53 52 20 4D 41 52 4B 42 41 |AMSG. JSR MARKBA| 00000EF0: 44 53 45 43 54 4F 52 20 3B 4D 41 52 4B 20 41 53 |DSECTOR ;MARK AS| 00000F00: 20 42 41 44 0D 20 4A 4D 50 20 4F 4E 54 4F 4E 45 | BAD. JMP ONTONE| 00000F10: 58 54 53 45 43 54 4F 52 20 3B 47 4F 20 54 4F 20 |XTSECTOR ;GO TO | 00000F20: 4E 45 58 54 20 53 45 43 54 4F 52 0D 42 59 50 41 |NEXT SECTOR.BYPA| 00000F30: 53 53 57 52 49 54 45 20 4C 44 41 20 23 3C 52 44 |SSWRITE LDA #<RD| 00000F40: 42 55 46 0D 20 4A 53 52 20 50 55 54 44 43 42 4C |BUF. JSR PUTDCBL| 00000F50: 4F 42 55 46 50 54 52 0D 20 4C 44 41 20 23 3E 52 |OBUFPTR. LDA #>R| 00000F60: 44 42 55 46 0D 20 4A 53 52 20 50 55 54 44 43 42 |DBUF. JSR PUTDCB| 00000F70: 48 49 42 55 46 50 54 52 0D 52 45 41 44 41 53 45 |HIBUFPTR.READASE| 00000F80: 43 54 4F 52 20 4A 53 52 20 52 45 41 44 0D 20 42 |CTOR JSR READ. B| 00000F90: 43 43 20 49 53 49 54 49 4E 54 45 4E 53 49 56 45 |CC ISITINTENSIVE| 00000FA0: 0D 20 4A 53 52 20 52 45 41 44 54 48 45 53 45 4E |. JSR READTHESEN| 00000FB0: 53 45 20 3B 52 45 54 52 49 45 56 45 20 53 45 4E |SE ;RETRIEVE SEN| 00000FC0: 53 45 0D 20 4A 53 52 20 57 52 49 54 45 4F 55 54 |SE. JSR WRITEOUT| 00000FD0: 53 45 4E 53 45 0D 20 4C 44 41 20 23 3C 52 44 45 |SENSE. LDA #<RDE| 00000FE0: 52 52 4F 52 4D 53 47 20 3B 52 45 41 44 20 45 52 |RRORMSG ;READ ER| 00000FF0: 52 4F 52 0D 52 45 41 44 52 45 54 52 59 20 50 48 |ROR.READRETRY PH| 00001000: 41 20 3B 53 41 56 45 20 4D 53 47 20 4E 55 4D 42 |A ;SAVE MSG NUMB| 00001010: 45 52 0D 20 4A 53 52 20 52 45 53 45 54 46 4F 52 |ER. JSR RESETFOR| 00001020: 52 45 54 52 59 20 3B 53 45 54 20 55 50 20 46 4F |RETRY ;SET UP FO| 00001030: 52 20 52 45 54 52 59 0D 20 50 4C 41 20 3B 52 45 |R RETRY. PLA ;RE| 00001040: 54 52 49 45 56 45 20 4D 53 47 20 4E 55 4D 42 45 |TRIEVE MSG NUMBE| 00001050: 52 0D 20 44 45 43 20 52 44 52 45 54 52 59 43 4F |R. DEC RDRETRYCO| 00001060: 55 4E 54 45 52 20 3B 43 48 45 43 4B 20 46 4F 52 |UNTER ;CHECK FOR| 00001070: 20 4D 41 58 20 4E 55 4D 0D 20 42 4E 45 20 52 45 | MAX NUM. BNE RE| 00001080: 41 44 41 53 45 43 54 4F 52 0D 20 4A 53 52 20 57 |ADASECTOR. JSR W| 00001090: 52 49 54 45 4F 55 54 41 4D 53 47 0D 20 4A 53 52 |RITEOUTAMSG. JSR| 000010A0: 20 4D 41 52 4B 42 41 44 53 45 43 54 4F 52 0D 20 | MARKBADSECTOR. | 000010B0: 4A 4D 50 20 4F 4E 54 4F 4E 45 58 54 53 45 43 54 |JMP ONTONEXTSECT| 000010C0: 4F 52 0D 49 53 49 54 49 4E 54 45 4E 53 49 56 45 |OR.ISITINTENSIVE| 000010D0: 20 4C 44 41 20 49 4E 54 45 4E 53 49 56 45 46 4C | LDA INTENSIVEFL| 000010E0: 41 47 20 3B 43 48 45 43 4B 20 46 4F 52 20 49 4E |AG ;CHECK FOR IN| 000010F0: 53 54 45 4E 53 45 0D 20 42 4E 45 20 4F 4E 54 4F |STENSE. BNE ONTO| 00001100: 4E 45 58 54 53 45 43 54 4F 52 20 3B 42 59 50 41 |NEXTSECTOR ;BYPA| 00001110: 53 53 20 43 4F 4D 50 41 52 45 0D 20 4C 44 59 20 |SS COMPARE. LDY | 00001120: 23 30 20 3B 53 45 54 20 55 50 20 46 4F 52 20 43 |#0 ;SET UP FOR C| 00001130: 4F 4D 50 41 52 45 0D 43 4F 4D 50 41 52 45 53 45 |OMPARE.COMPARESE| 00001140: 43 54 4F 52 53 20 4C 44 41 20 57 52 54 42 55 46 |CTORS LDA WRTBUF| 00001150: 2C 59 0D 20 43 4D 50 20 52 44 42 55 46 2C 59 0D |,Y. CMP RDBUF,Y.| 00001160: 20 42 4E 45 20 42 41 44 43 4F 4D 50 41 52 45 0D | BNE BADCOMPARE.| 00001170: 20 4C 44 41 20 57 52 54 42 55 46 2B 32 35 36 2C | LDA WRTBUF+256,| 00001180: 59 0D 20 43 4D 50 20 52 44 42 55 46 2B 32 35 36 |Y. CMP RDBUF+256| 00001190: 2C 59 0D 20 42 45 51 20 43 4F 4D 50 41 52 45 4E |,Y. BEQ COMPAREN| 000011A0: 45 58 54 0D 42 41 44 43 4F 4D 50 41 52 45 20 4C |EXT.BADCOMPARE L| 000011B0: 44 41 20 23 3C 43 4F 4D 50 41 52 45 45 52 52 4D |DA #<COMPAREERRM| 000011C0: 53 47 0D 20 42 4E 45 20 52 45 41 44 52 45 54 52 |SG. BNE READRETR| 000011D0: 59 0D 43 4F 4D 50 41 52 45 4E 45 58 54 20 49 4E |Y.COMPARENEXT IN| 000011E0: 59 0D 20 42 4E 45 20 43 4F 4D 50 41 52 45 53 45 |Y. BNE COMPARESE| 000011F0: 43 54 4F 52 53 0D 4F 4E 54 4F 4E 45 58 54 53 45 |CTORS.ONTONEXTSE| 00001200: 43 54 4F 52 20 4C 44 58 20 53 45 43 54 4F 52 43 |CTOR LDX SECTORC| 00001210: 4F 55 4E 54 45 52 20 3B 43 48 45 43 4B 20 53 45 |OUNTER ;CHECK SE| 00001220: 43 54 4F 52 0D 20 49 4E 58 0D 20 43 50 58 20 23 |CTOR. INX. CPX #| 00001230: 31 37 0D 20 42 4E 45 20 42 55 4D 50 54 48 45 48 |17. BNE BUMPTHEH| 00001240: 45 41 44 0D 20 4C 44 58 20 23 30 0D 42 55 4D 50 |EAD. LDX #0.BUMP| 00001250: 54 48 45 48 45 41 44 20 53 54 58 20 53 45 43 54 |THEHEAD STX SECT| 00001260: 4F 52 43 4F 55 4E 54 45 52 20 3B 53 41 56 45 20 |ORCOUNTER ;SAVE | 00001270: 53 45 43 54 4F 52 0D 20 42 4E 45 20 47 4F 54 4E |SECTOR. BNE GOTN| 00001280: 45 57 41 44 44 52 45 53 53 20 3B 47 4F 20 4F 4E |EWADDRESS ;GO ON| 00001290: 20 49 46 20 42 45 4C 4F 57 0D 20 4C 44 58 20 48 | IF BELOW. LDX H| 000012A0: 45 41 44 43 4F 55 4E 54 45 52 20 3B 42 55 4D 50 |EADCOUNTER ;BUMP| 000012B0: 20 54 4F 20 4E 45 58 54 20 48 45 41 44 0D 20 49 | TO NEXT HEAD. I| 000012C0: 4E 58 0D 20 43 50 58 20 4E 55 4D 42 45 52 4F 46 |NX. CPX NUMBEROF| 000012D0: 48 45 41 44 53 20 3B 41 54 20 4D 41 58 3F 0D 20 |HEADS ;AT MAX?. | 000012E0: 42 4E 45 20 53 41 56 45 48 45 41 44 43 4F 55 4E |BNE SAVEHEADCOUN| 000012F0: 54 0D 20 4C 44 58 20 23 30 0D 53 41 56 45 48 45 |T. LDX #0.SAVEHE| 00001300: 41 44 43 4F 55 4E 54 20 53 54 58 20 48 45 41 44 |ADCOUNT STX HEAD| 00001310: 43 4F 55 4E 54 45 52 0D 20 42 4E 45 20 47 4F 54 |COUNTER. BNE GOT| 00001320: 4E 45 57 41 44 44 52 45 53 53 0D 20 4C 44 41 20 |NEWADDRESS. LDA | 00001330: 24 44 43 30 42 20 3B 47 45 54 20 48 52 53 20 53 |$DC0B ;GET HRS S| 00001340: 54 4F 50 20 43 4C 4F 43 4B 0D 20 4C 44 41 20 24 |TOP CLOCK. LDA $| 00001350: 44 43 30 39 20 3B 47 45 54 20 53 45 43 4F 4E 44 |DC09 ;GET SECOND| 00001360: 53 0D 20 4A 53 52 20 48 45 58 54 4F 41 53 43 49 |S. JSR HEXTOASCI| 00001370: 49 0D 20 53 54 41 20 24 34 31 30 0D 20 53 54 58 |I. STA $410. STX| 00001380: 20 24 34 31 31 0D 20 4C 44 41 20 23 27 3A 27 0D | $411. LDA #':'.| 00001390: 20 53 54 41 20 24 34 31 32 0D 20 4C 44 41 20 24 | STA $412. LDA $| 000013A0: 44 43 30 38 0D 20 4A 53 52 20 48 45 58 54 4F 41 |DC08. JSR HEXTOA| 000013B0: 53 43 49 49 0D 20 53 54 58 20 24 30 34 31 33 0D |SCII. STX $0413.| 000013C0: 20 53 54 41 20 24 30 34 31 34 0D 20 4C 44 41 20 | STA $0414. LDA | 000013D0: 24 44 43 30 46 0D 20 41 4E 44 20 23 24 37 46 0D |$DC0F. AND #$7F.| 000013E0: 20 53 54 41 20 24 44 43 30 46 0D 20 4C 44 41 20 | STA $DC0F. LDA | 000013F0: 23 24 30 30 0D 20 4C 44 58 20 23 34 0D 53 45 54 |#$00. LDX #4.SET| 00001400: 54 49 4D 45 54 4F 5A 45 52 4F 20 53 54 41 20 24 |TIMETOZERO STA $| 00001410: 44 43 30 38 2C 58 0D 20 44 45 58 0D 20 42 50 4C |DC08,X. DEX. BPL| 00001420: 20 53 45 54 54 49 4D 45 54 4F 5A 45 52 4F 0D 20 | SETTIMETOZERO. | 00001430: 4C 44 58 20 43 59 4C 49 4E 44 45 52 43 4F 55 4E |LDX CYLINDERCOUN| 00001440: 54 52 20 3B 43 48 45 43 4B 20 46 4F 52 20 45 4E |TR ;CHECK FOR EN| 00001450: 44 0D 20 43 50 58 20 4E 55 4D 43 59 4C 49 4E 44 |D. CPX NUMCYLIND| 00001460: 45 52 53 0D 20 42 4E 45 20 42 55 4D 50 43 59 4C |ERS. BNE BUMPCYL| 00001470: 49 4E 44 45 52 4C 4F 0D 20 4C 44 58 20 43 59 4C |INDERLO. LDX CYL| 00001480: 49 4E 44 45 52 43 4F 55 4E 54 52 2B 31 0D 20 43 |INDERCOUNTR+1. C| 00001490: 50 58 20 4E 55 4D 43 59 4C 49 4E 44 45 52 53 2B |PX NUMCYLINDERS+| 000014A0: 31 0D 20 42 45 51 20 45 4E 44 4F 46 46 4F 52 4D |1. BEQ ENDOFFORM| 000014B0: 41 54 0D 42 55 4D 50 43 59 4C 49 4E 44 45 52 4C |AT.BUMPCYLINDERL| 000014C0: 4F 20 49 4E 43 20 43 59 4C 49 4E 44 45 52 43 4F |O INC CYLINDERCO| 000014D0: 55 4E 54 52 20 3B 42 55 4D 50 20 42 59 20 4F 4E |UNTR ;BUMP BY ON| 000014E0: 45 0D 20 42 45 51 20 42 55 4D 50 43 59 4C 49 4E |E. BEQ BUMPCYLIN| 000014F0: 44 45 52 48 49 0D 47 4F 54 4E 45 57 41 44 44 52 |DERHI.GOTNEWADDR| 00001500: 45 53 53 20 4A 4D 50 20 46 4F 52 4D 41 54 44 52 |ESS JMP FORMATDR| 00001510: 49 56 45 0D 42 55 4D 50 43 59 4C 49 4E 44 45 52 |IVE.BUMPCYLINDER| 00001520: 48 49 20 49 4E 43 20 43 59 4C 49 4E 44 45 52 43 |HI INC CYLINDERC| 00001530: 4F 55 4E 54 52 2B 31 0D 20 4A 4D 50 20 46 4F 52 |OUNTR+1. JMP FOR| 00001540: 4D 41 54 44 52 49 56 45 0D 45 4E 44 4F 46 46 4F |MATDRIVE.ENDOFFO| 00001550: 52 4D 41 54 20 4C 44 41 20 23 3C 45 4E 44 4F 46 |RMAT LDA #<ENDOF| 00001560: 4A 4F 42 4D 53 47 0D 20 4A 53 52 20 57 52 49 54 |JOBMSG. JSR WRIT| 00001570: 45 4F 55 54 41 4D 53 47 0D 20 42 52 4B 0D 3B 0D |EOUTAMSG. BRK.;.| 00001580: 3B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |;+++++++++++++++| 00001590: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 000015A0: 2B 2B 0D 3B 2B 20 20 20 20 20 53 45 54 20 44 43 |++.;+ SET DC| 000015B0: 42 20 46 49 45 4C 44 20 20 20 20 20 20 20 20 20 |B FIELD | 000015C0: 20 20 20 20 2B 0D 3B 2B 20 20 20 20 20 20 20 20 | +.;+ | 000015D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000015E0: 20 20 20 20 20 20 20 2B 0D 3B 2B 20 49 4E 50 55 | +.;+ INPU| 000015F0: 54 20 20 2D 20 41 20 3D 20 42 59 54 45 20 54 4F |T - A = BYTE TO| 00001600: 20 50 55 54 20 20 20 20 20 20 2B 0D 3B 2B 20 20 | PUT +.;+ | 00001610: 20 20 20 20 20 20 20 20 58 20 3D 20 4F 46 46 53 | X = OFFS| 00001620: 45 54 20 49 4E 20 44 43 42 20 20 20 20 2B 0D 3B |ET IN DCB +.;| 00001630: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 00001640: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 00001650: 2B 0D 3B 0D 50 55 54 44 43 42 43 4F 4D 4D 41 4E |+.;.PUTDCBCOMMAN| 00001660: 44 20 4C 44 58 20 23 30 20 3B 4F 46 46 53 45 54 |D LDX #0 ;OFFSET| 00001670: 20 30 0D 20 2E 42 59 54 20 24 32 43 20 3B 42 49 | 0. .BYT $2C ;BI| 00001680: 54 0D 50 55 54 44 43 42 48 45 41 44 20 3D 20 2A |T.PUTDCBHEAD = *| 00001690: 20 3B 53 41 4D 45 20 41 53 20 50 55 54 20 44 52 | ;SAME AS PUT DR| 000016A0: 49 56 45 0D 50 55 54 44 43 42 44 52 49 56 45 20 |IVE.PUTDCBDRIVE | 000016B0: 4C 44 58 20 23 31 20 3B 4F 46 46 53 45 54 20 31 |LDX #1 ;OFFSET 1| 000016C0: 0D 20 2E 42 59 54 20 24 32 43 20 3B 42 49 54 0D |. .BYT $2C ;BIT.| 000016D0: 50 55 54 44 43 42 4D 53 42 53 45 43 54 52 20 4C |PUTDCBMSBSECTR L| 000016E0: 44 58 20 23 32 20 3B 4F 46 46 53 45 54 20 32 0D |DX #2 ;OFFSET 2.| 000016F0: 20 2E 42 59 54 20 24 32 43 20 3B 42 49 54 0D 50 | .BYT $2C ;BIT.P| 00001700: 55 54 44 43 42 43 59 4C 4C 53 42 20 4C 44 58 20 |UTDCBCYLLSB LDX | 00001710: 23 33 20 3B 4F 46 46 53 45 54 20 33 0D 20 2E 42 |#3 ;OFFSET 3. .B| 00001720: 59 54 20 24 32 43 20 3B 42 49 54 0D 50 55 54 44 |YT $2C ;BIT.PUTD| 00001730: 43 42 4E 55 4D 53 45 43 53 20 4C 44 58 20 23 34 |CBNUMSECS LDX #4| 00001740: 20 3B 4F 46 46 53 45 54 20 34 0D 20 2E 42 59 54 | ;OFFSET 4. .BYT| 00001750: 20 24 32 43 20 3B 42 49 54 0D 50 55 54 44 43 42 | $2C ;BIT.PUTDCB| 00001760: 53 54 45 50 20 4C 44 58 20 23 35 20 3B 4F 46 46 |STEP LDX #5 ;OFF| 00001770: 53 45 54 20 35 0D 20 2E 42 59 54 20 24 32 43 20 |SET 5. .BYT $2C | 00001780: 3B 42 49 54 0D 50 55 54 44 43 42 4C 4F 42 55 46 |;BIT.PUTDCBLOBUF| 00001790: 50 54 52 20 4C 44 58 20 23 36 20 3B 4F 46 46 53 |PTR LDX #6 ;OFFS| 000017A0: 45 54 20 36 0D 20 2E 42 59 54 20 24 32 43 20 3B |ET 6. .BYT $2C ;| 000017B0: 42 49 54 0D 50 55 54 44 43 42 48 49 42 55 46 50 |BIT.PUTDCBHIBUFP| 000017C0: 54 52 20 4C 44 58 20 23 37 20 3B 4F 46 46 53 45 |TR LDX #7 ;OFFSE| 000017D0: 54 20 37 0D 50 55 54 44 43 42 20 53 54 41 20 50 |T 7.PUTDCB STA P| 000017E0: 55 54 44 43 42 2C 58 0D 50 54 52 31 20 3D 20 50 |UTDCB,X.PTR1 = P| 000017F0: 55 54 44 43 42 2B 31 0D 50 54 52 32 20 3D 20 50 |UTDCB+1.PTR2 = P| 00001800: 55 54 44 43 42 2B 32 0D 20 52 54 53 20 3B 20 53 |UTDCB+2. RTS ; S| 00001810: 48 4F 52 54 20 41 4E 44 20 53 57 45 45 54 3F 3F |HORT AND SWEET??| 00001820: 0D 3B 0D 52 45 41 44 54 48 45 53 45 4E 53 45 20 |.;.READTHESENSE | 00001830: 4C 44 59 20 23 31 32 20 3B 4F 46 46 53 45 54 20 |LDY #12 ;OFFSET | 00001840: 54 4F 20 53 45 4E 53 45 0D 20 53 54 41 20 45 52 |TO SENSE. STA ER| 00001850: 52 4F 52 43 4F 44 45 20 3B 53 41 56 45 20 45 52 |RORCODE ;SAVE ER| 00001860: 52 4F 52 20 43 4F 44 45 0D 20 4C 44 58 20 23 30 |ROR CODE. LDX #0| 00001870: 0D 47 45 54 41 4C 4C 54 48 45 53 45 4E 53 45 20 |.GETALLTHESENSE | 00001880: 4C 44 41 20 47 45 54 41 4C 4C 54 48 45 53 45 4E |LDA GETALLTHESEN| 00001890: 53 45 2C 59 0D 50 54 52 58 20 3D 20 47 45 54 41 |SE,Y.PTRX = GETA| 000018A0: 4C 4C 54 48 45 53 45 4E 53 45 2B 31 0D 20 53 54 |LLTHESENSE+1. ST| 000018B0: 41 20 43 55 52 52 45 4E 54 53 45 4E 53 45 2C 58 |A CURRENTSENSE,X| 000018C0: 20 3B 50 55 54 20 49 4E 20 42 55 46 46 45 52 0D | ;PUT IN BUFFER.| 000018D0: 20 49 4E 58 0D 20 49 4E 59 0D 20 43 50 58 20 23 | INX. INY. CPX #| 000018E0: 34 0D 20 42 4E 45 20 47 45 54 41 4C 4C 54 48 45 |4. BNE GETALLTHE| 000018F0: 53 45 4E 53 45 0D 20 52 54 53 0D 3B 0D 47 45 54 |SENSE. RTS.;.GET| 00001900: 44 43 42 43 4F 4D 4D 41 4E 44 20 4C 44 59 20 23 |DCBCOMMAND LDY #| 00001910: 30 0D 20 2E 42 59 54 20 24 32 43 0D 47 45 54 44 |0. .BYT $2C.GETD| 00001920: 43 42 48 45 41 44 20 4C 44 59 20 23 31 0D 20 2E |CBHEAD LDY #1. .| 00001930: 42 59 54 20 24 32 43 0D 47 45 54 44 43 42 53 45 |BYT $2C.GETDCBSE| 00001940: 43 54 4F 52 20 4C 44 59 20 23 32 0D 20 2E 42 59 |CTOR LDY #2. .BY| 00001950: 54 20 24 32 43 0D 47 45 54 44 43 42 43 59 4C 4C |T $2C.GETDCBCYLL| 00001960: 53 42 20 4C 44 59 20 23 33 0D 3B 0D 47 45 54 44 |SB LDY #3.;.GETD| 00001970: 43 42 49 4E 46 4F 20 4C 44 41 20 47 45 54 44 43 |CBINFO LDA GETDC| 00001980: 42 49 4E 46 4F 2C 59 20 3B 59 20 48 41 53 20 4F |BINFO,Y ;Y HAS O| 00001990: 46 46 53 45 54 0D 44 43 42 50 54 52 46 4F 52 47 |FFSET.DCBPTRFORG| 000019A0: 45 54 20 3D 20 47 45 54 44 43 42 49 4E 46 4F 2B |ET = GETDCBINFO+| 000019B0: 31 0D 20 52 54 53 0D 3B 0D 3B 0D 57 52 49 54 45 |1. RTS.;.;.WRITE| 000019C0: 4F 55 54 48 45 58 20 50 48 41 0D 20 41 4E 44 20 |OUTHEX PHA. AND | 000019D0: 23 24 46 30 20 3B 48 49 47 48 20 4E 59 42 4C 45 |#$F0 ;HIGH NYBLE| 000019E0: 20 46 49 52 53 54 0D 20 4C 53 52 20 41 0D 20 4C | FIRST. LSR A. L| 000019F0: 53 52 20 41 0D 20 4C 53 52 20 41 0D 20 4C 53 52 |SR A. LSR A. LSR| 00001A00: 20 41 0D 20 4A 53 52 20 49 53 49 54 41 54 48 52 | A. JSR ISITATHR| 00001A10: 55 46 0D 20 50 4C 41 0D 20 41 4E 44 20 23 24 30 |UF. PLA. AND #$0| 00001A20: 46 0D 49 53 49 54 41 54 48 52 55 46 20 43 4D 50 |F.ISITATHRUF CMP| 00001A30: 20 23 24 30 41 0D 20 42 43 43 20 41 44 44 41 53 | #$0A. BCC ADDAS| 00001A40: 43 49 49 5A 45 52 4F 0D 20 41 44 43 20 23 36 20 |CIIZERO. ADC #6 | 00001A50: 3B 41 44 44 20 53 45 56 45 4E 0D 41 44 44 41 53 |;ADD SEVEN.ADDAS| 00001A60: 43 49 49 5A 45 52 4F 20 41 44 43 20 23 24 33 30 |CIIZERO ADC #$30| 00001A70: 0D 20 4A 4D 50 20 24 46 46 44 32 0D 48 45 58 54 |. JMP $FFD2.HEXT| 00001A80: 4F 41 53 43 49 49 20 50 48 41 0D 20 41 4E 44 20 |OASCII PHA. AND | 00001A90: 23 24 30 46 20 3B 47 45 54 20 4C 4F 57 20 4E 59 |#$0F ;GET LOW NY| 00001AA0: 42 4C 45 0D 20 4A 53 52 20 42 49 47 47 45 52 54 |BLE. JSR BIGGERT| 00001AB0: 48 41 4E 39 0D 20 54 41 58 0D 20 50 4C 41 0D 20 |HAN9. TAX. PLA. | 00001AC0: 41 4E 44 20 23 24 46 30 20 3B 4E 4F 57 20 48 49 |AND #$F0 ;NOW HI| 00001AD0: 20 4E 59 42 4C 45 0D 20 4C 53 52 20 41 0D 20 4C | NYBLE. LSR A. L| 00001AE0: 53 52 20 41 0D 20 4C 53 52 20 41 0D 20 4C 53 52 |SR A. LSR A. LSR| 00001AF0: 20 41 0D 42 49 47 47 45 52 54 48 41 4E 39 20 43 | A.BIGGERTHAN9 C| 00001B00: 4D 50 20 23 24 30 41 0D 20 42 43 43 20 41 44 44 |MP #$0A. BCC ADD| 00001B10: 41 5A 45 52 4F 0D 20 53 42 43 20 23 39 0D 20 52 |AZERO. SBC #9. R| 00001B20: 54 53 0D 20 41 44 43 20 23 36 20 3B 41 44 44 20 |TS. ADC #6 ;ADD | 00001B30: 53 45 56 45 4E 0D 41 44 44 41 5A 45 52 4F 20 41 |SEVEN.ADDAZERO A| 00001B40: 44 43 20 23 24 33 30 0D 20 52 54 53 0D 3B 0D 57 |DC #$30. RTS.;.W| 00001B50: 52 49 54 45 4F 55 54 53 45 4E 53 45 20 4C 44 59 |RITEOUTSENSE LDY| 00001B60: 20 23 30 0D 57 52 49 54 45 41 4C 4C 53 45 4E 53 | #0.WRITEALLSENS| 00001B70: 45 20 4C 44 41 20 45 52 52 4F 52 43 4F 44 45 2C |E LDA ERRORCODE,| 00001B80: 59 20 3B 47 45 54 20 45 52 52 4F 52 43 4F 44 45 |Y ;GET ERRORCODE| 00001B90: 20 41 4E 44 20 53 45 4E 53 45 0D 20 4A 53 52 20 | AND SENSE. JSR | 00001BA0: 57 52 49 54 45 4F 55 54 48 45 58 20 3B 57 52 49 |WRITEOUTHEX ;WRI| 00001BB0: 54 45 20 49 54 0D 20 4C 44 41 20 23 33 32 0D 20 |TE IT. LDA #32. | 00001BC0: 4A 53 52 20 24 46 46 44 32 0D 20 49 4E 59 0D 20 |JSR $FFD2. INY. | 00001BD0: 43 50 59 20 23 35 20 3B 47 4F 54 20 45 4D 20 41 |CPY #5 ;GOT EM A| 00001BE0: 4C 4C 3F 0D 20 42 4E 45 20 57 52 49 54 45 41 4C |LL?. BNE WRITEAL| 00001BF0: 4C 53 45 4E 53 45 0D 20 4C 44 41 20 23 31 33 0D |LSENSE. LDA #13.| 00001C00: 20 4A 4D 50 20 24 46 46 44 32 0D 3B 0D 57 52 49 | JMP $FFD2.;.WRI| 00001C10: 54 45 4F 55 54 41 4D 53 47 20 54 41 58 20 3B 47 |TEOUTAMSG TAX ;G| 00001C20: 45 54 20 49 4E 44 45 58 20 49 4E 54 4F 20 54 41 |ET INDEX INTO TA| 00001C30: 42 4C 45 0D 20 4C 44 41 20 4D 54 41 42 2C 58 0D |BLE. LDA MTAB,X.| 00001C40: 20 53 54 41 20 4D 50 54 52 0D 20 4C 44 41 20 4D | STA MPTR. LDA M| 00001C50: 54 41 42 2B 31 2C 58 0D 20 53 54 41 20 4D 50 54 |TAB+1,X. STA MPT| 00001C60: 52 2B 31 0D 20 4C 44 59 20 23 30 0D 57 52 49 54 |R+1. LDY #0.WRIT| 00001C70: 45 4D 53 47 4C 4F 4F 50 20 4C 44 41 20 57 52 49 |EMSGLOOP LDA WRI| 00001C80: 54 45 4D 53 47 4C 4F 4F 50 2C 59 0D 4D 50 54 52 |TEMSGLOOP,Y.MPTR| 00001C90: 20 3D 20 57 52 49 54 45 4D 53 47 4C 4F 4F 50 2B | = WRITEMSGLOOP+| 00001CA0: 31 0D 20 42 45 51 20 45 4E 44 4F 46 4D 45 53 53 |1. BEQ ENDOFMESS| 00001CB0: 41 47 45 0D 20 4A 53 52 20 24 46 46 44 32 0D 20 |AGE. JSR $FFD2. | 00001CC0: 49 4E 59 0D 20 42 4E 45 20 57 52 49 54 45 4D 53 |INY. BNE WRITEMS| 00001CD0: 47 4C 4F 4F 50 0D 45 4E 44 4F 46 4D 45 53 53 41 |GLOOP.ENDOFMESSA| 00001CE0: 47 45 20 52 54 53 0D 3B 0D 52 45 53 45 54 46 4F |GE RTS.;.RESETFO| 00001CF0: 52 52 45 54 52 59 20 4A 53 52 20 52 45 53 45 54 |RRETRY JSR RESET| 00001D00: 0D 53 45 54 55 50 44 43 42 20 4C 44 41 20 48 45 |.SETUPDCB LDA HE| 00001D10: 41 44 43 4F 55 4E 54 45 52 20 3B 53 45 54 20 48 |ADCOUNTER ;SET H| 00001D20: 45 41 44 20 4E 55 4D 42 45 52 0D 20 4A 53 52 20 |EAD NUMBER. JSR | 00001D30: 50 55 54 44 43 42 48 45 41 44 20 3B 50 55 54 20 |PUTDCBHEAD ;PUT | 00001D40: 48 45 41 44 20 23 20 49 4E 20 44 43 42 0D 20 4C |HEAD # IN DCB. L| 00001D50: 44 41 20 43 59 4C 49 4E 44 45 52 43 4F 55 4E 54 |DA CYLINDERCOUNT| 00001D60: 52 2B 31 20 3B 47 45 54 20 43 59 4C 20 23 48 49 |R+1 ;GET CYL #HI| 00001D70: 0D 20 41 53 4C 20 41 20 3B 4D 4F 56 45 20 54 4F |. ASL A ;MOVE TO| 00001D80: 20 48 49 47 48 20 42 49 54 53 0D 20 41 53 4C 20 | HIGH BITS. ASL | 00001D90: 41 0D 20 41 53 4C 20 41 0D 20 41 53 4C 20 41 0D |A. ASL A. ASL A.| 00001DA0: 20 41 53 4C 20 41 0D 20 41 53 4C 20 41 0D 20 4F | ASL A. ASL A. O| 00001DB0: 52 41 20 53 45 43 54 4F 52 43 4F 55 4E 54 45 52 |RA SECTORCOUNTER| 00001DC0: 0D 20 4A 53 52 20 50 55 54 44 43 42 4D 53 42 53 |. JSR PUTDCBMSBS| 00001DD0: 45 43 54 52 20 3B 4D 53 42 20 43 59 4C 20 41 4E |ECTR ;MSB CYL AN| 00001DE0: 44 20 53 45 43 54 4F 52 0D 20 4C 44 41 20 43 59 |D SECTOR. LDA CY| 00001DF0: 4C 49 4E 44 45 52 43 4F 55 4E 54 52 20 3B 4C 53 |LINDERCOUNTR ;LS| 00001E00: 42 20 43 59 4C 0D 20 4A 53 52 20 50 55 54 44 43 |B CYL. JSR PUTDC| 00001E10: 42 43 59 4C 4C 53 42 0D 20 4C 44 41 20 23 31 20 |BCYLLSB. LDA #1 | 00001E20: 3B 53 45 54 20 4E 55 4D 20 42 4C 4F 43 4B 53 0D |;SET NUM BLOCKS.| 00001E30: 20 4A 4D 50 20 50 55 54 44 43 42 4E 55 4D 53 45 | JMP PUTDCBNUMSE| 00001E40: 43 53 0D 3B 0D 4D 41 52 4B 42 41 44 53 45 43 54 |CS.;.MARKBADSECT| 00001E50: 4F 52 20 4A 53 52 20 47 45 54 44 43 42 48 45 41 |OR JSR GETDCBHEA| 00001E60: 44 0D 20 41 4E 44 20 23 24 30 46 20 3B 43 4C 45 |D. AND #$0F ;CLE| 00001E70: 41 52 20 44 52 49 56 45 20 4E 55 4D 42 45 52 0D |AR DRIVE NUMBER.| 00001E80: 20 4A 53 52 20 50 55 54 42 41 44 53 45 43 54 4F | JSR PUTBADSECTO| 00001E90: 52 0D 20 4A 53 52 20 47 45 54 44 43 42 53 45 43 |R. JSR GETDCBSEC| 00001EA0: 54 4F 52 0D 20 4A 53 52 20 50 55 54 42 41 44 53 |TOR. JSR PUTBADS| 00001EB0: 45 43 54 4F 52 0D 20 4A 53 52 20 47 45 54 44 43 |ECTOR. JSR GETDC| 00001EC0: 42 43 59 4C 4C 53 42 0D 20 4A 53 52 20 50 55 54 |BCYLLSB. JSR PUT| 00001ED0: 42 41 44 53 45 43 54 4F 52 0D 20 52 54 53 0D 50 |BADSECTOR. RTS.P| 00001EE0: 55 54 42 41 44 53 45 43 54 4F 52 20 53 54 41 20 |UTBADSECTOR STA | 00001EF0: 42 41 44 53 45 43 54 4F 52 53 0D 20 49 4E 43 20 |BADSECTORS. INC | 00001F00: 50 55 54 42 41 44 53 45 43 54 4F 52 2B 31 0D 20 |PUTBADSECTOR+1. | 00001F10: 42 4E 45 20 50 55 54 42 41 44 53 45 43 45 4E 44 |BNE PUTBADSECEND| 00001F20: 0D 20 49 4E 43 20 50 55 54 42 41 44 53 45 43 54 |. INC PUTBADSECT| 00001F30: 4F 52 2B 32 0D 20 44 45 43 20 42 41 44 53 45 43 |OR+2. DEC BADSEC| 00001F40: 54 4F 52 43 54 52 20 3B 42 41 43 4B 20 4F 46 46 |TORCTR ;BACK OFF| 00001F50: 20 55 53 45 44 20 53 50 41 43 45 0D 20 42 4E 45 | USED SPACE. BNE| 00001F60: 20 50 55 54 42 41 44 53 45 43 45 4E 44 0D 20 4C | PUTBADSECEND. L| 00001F70: 44 41 20 23 3C 54 4F 4F 4D 41 4E 59 42 41 44 20 |DA #<TOOMANYBAD | 00001F80: 3B 54 4F 4F 20 4D 41 4E 59 20 42 41 44 20 53 45 |;TOO MANY BAD SE| 00001F90: 43 54 4F 52 53 0D 20 4A 53 52 20 57 52 49 54 45 |CTORS. JSR WRITE| 00001FA0: 4F 55 54 41 4D 53 47 0D 20 50 4C 41 20 3B 54 45 |OUTAMSG. PLA ;TE| 00001FB0: 52 4D 49 4E 41 54 45 20 4E 4F 57 21 0D 20 50 4C |RMINATE NOW!. PL| 00001FC0: 41 20 3B 42 59 20 50 55 4C 4C 49 4E 47 20 4F 46 |A ;BY PULLING OF| 00001FD0: 46 20 54 48 45 20 52 45 54 55 52 4E 0D 20 50 4C |F THE RETURN. PL| 00001FE0: 41 20 3B 54 57 49 43 45 0D 20 50 4C 41 0D 50 55 |A ;TWICE. PLA.PU| 00001FF0: 54 42 41 44 53 45 43 45 4E 44 20 52 54 53 0D 3B |TBADSECEND RTS.;| 00002000: 0D 2E 4C 49 42 20 43 32 53 45 43 31 34 2E 53 52 |..LIB C2SEC14.SR| 00002010: 43 0D 3B 0D 3B 2B 2B 2B 20 4D 45 53 53 41 47 45 |C.;.;+++ MESSAGE| 00002020: 20 54 41 42 4C 45 20 2B 2B 2B 0D 4D 54 41 42 20 | TABLE +++.MTAB | 00002030: 3D 20 2A 0D 48 45 41 44 49 4E 47 4D 53 47 20 3D |= *.HEADINGMSG =| 00002040: 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F 52 20 48 45 | *-MTAB. .WOR HE| 00002050: 41 44 45 52 0D 52 45 53 45 54 45 52 52 4F 52 4D |ADER.RESETERRORM| 00002060: 53 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F |SG = *-MTAB. .WO| 00002070: 52 20 52 45 53 45 54 45 20 3B 45 52 52 4F 52 20 |R RESETE ;ERROR | 00002080: 4F 4E 20 52 45 53 45 54 0D 54 4F 4F 4D 41 4E 59 |ON RESET.TOOMANY| 00002090: 42 41 44 20 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 |BAD = *-MTAB. .W| 000020A0: 4F 52 20 54 4F 4F 4D 41 4E 59 42 41 44 4D 53 47 |OR TOOMANYBADMSG| 000020B0: 0D 4C 4F 57 4C 45 56 45 4C 4D 53 47 20 3D 20 2A |.LOWLEVELMSG = *| 000020C0: 2D 4D 54 41 42 0D 20 2E 57 4F 52 20 4C 4F 57 4C |-MTAB. .WOR LOWL| 000020D0: 56 4C 0D 4C 4F 57 4C 45 56 45 4C 45 52 52 4D 53 |VL.LOWLEVELERRMS| 000020E0: 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F 52 |G = *-MTAB. .WOR| 000020F0: 20 4C 4F 57 45 52 52 20 3B 45 52 52 4F 52 20 4F | LOWERR ;ERROR O| 00002100: 4E 20 4C 4F 57 20 4C 45 56 45 4C 0D 57 52 49 54 |N LOW LEVEL.WRIT| 00002110: 45 45 52 52 4F 52 4D 53 47 20 3D 20 2A 2D 4D 54 |EERRORMSG = *-MT| 00002120: 41 42 0D 20 2E 57 4F 52 20 57 52 54 45 52 52 20 |AB. .WOR WRTERR | 00002130: 3B 57 52 49 54 45 20 45 52 52 4F 52 0D 52 44 45 |;WRITE ERROR.RDE| 00002140: 52 52 4F 52 4D 53 47 20 3D 20 2A 2D 4D 54 41 42 |RRORMSG = *-MTAB| 00002150: 0D 20 2E 57 4F 52 20 52 45 41 44 45 52 20 3B 52 |. .WOR READER ;R| 00002160: 45 41 44 20 45 52 52 4F 52 0D 45 4E 44 4F 46 4A |EAD ERROR.ENDOFJ| 00002170: 4F 42 4D 53 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 |OBMSG = *-MTAB. | 00002180: 2E 57 4F 52 20 46 49 4E 49 53 48 20 3B 45 4E 44 |.WOR FINISH ;END| 00002190: 20 4F 46 20 4A 4F 42 20 4D 53 47 0D 43 4F 4D 50 | OF JOB MSG.COMP| 000021A0: 41 52 45 45 52 52 4D 53 47 20 3D 20 2A 2D 4D 54 |AREERRMSG = *-MT| 000021B0: 41 42 0D 20 2E 57 4F 52 20 43 4F 4D 45 52 52 20 |AB. .WOR COMERR | 000021C0: 3B 43 4F 4D 50 41 52 45 20 45 52 52 4F 52 20 4D |;COMPARE ERROR M| 000021D0: 53 47 0D 49 4E 54 45 4E 53 49 56 45 4D 53 47 20 |SG.INTENSIVEMSG | 000021E0: 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F 52 20 48 |= *-MTAB. .WOR H| 000021F0: 4F 57 4D 53 47 20 3B 57 48 41 54 20 4B 49 4E 44 |OWMSG ;WHAT KIND| 00002200: 20 4F 46 20 46 4F 52 4D 41 54 0D 4E 55 4D 43 59 | OF FORMAT.NUMCY| 00002210: 4C 53 4D 53 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 |LSMSG = *-MTAB. | 00002220: 2E 57 4F 52 20 49 4E 50 55 54 4E 55 4D 43 59 4C |.WOR INPUTNUMCYL| 00002230: 53 20 3B 54 4F 54 41 4C 20 4E 55 4D 42 45 52 20 |S ;TOTAL NUMBER | 00002240: 4F 46 20 43 59 4C 53 20 4D 53 47 0D 4E 55 4D 48 |OF CYLS MSG.NUMH| 00002250: 45 41 44 53 4D 53 47 20 3D 20 2A 2D 4D 54 41 42 |EADSMSG = *-MTAB| 00002260: 0D 20 2E 57 4F 52 20 49 4E 50 55 54 4E 55 4D 48 |. .WOR INPUTNUMH| 00002270: 45 41 44 53 0D 52 45 44 55 43 45 44 57 52 54 4D |EADS.REDUCEDWRTM| 00002280: 53 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F |SG = *-MTAB. .WO| 00002290: 52 20 49 4E 50 55 54 52 45 44 55 43 45 44 0D 50 |R INPUTREDUCED.P| 000022A0: 52 45 43 4F 4D 50 4D 53 47 20 3D 20 2A 2D 4D 54 |RECOMPMSG = *-MT| 000022B0: 41 42 0D 20 2E 57 4F 52 20 49 4E 50 55 54 50 52 |AB. .WOR INPUTPR| 000022C0: 45 43 4F 4D 50 0D 42 55 52 53 54 4C 45 4E 4D 53 |ECOMP.BURSTLENMS| 000022D0: 47 20 3D 20 2A 2D 4D 54 41 42 0D 20 2E 57 4F 52 |G = *-MTAB. .WOR| 000022E0: 20 49 4E 50 55 54 42 55 52 53 54 4C 45 4E 0D 53 | INPUTBURSTLEN.S| 000022F0: 54 45 50 52 41 54 45 4D 53 47 20 3D 20 2A 2D 4D |TEPRATEMSG = *-M| 00002300: 54 41 42 0D 20 2E 57 4F 52 20 49 4E 50 55 54 53 |TAB. .WOR INPUTS| 00002310: 54 45 50 52 41 54 45 0D 3B 0D 48 45 41 44 45 52 |TEPRATE.;.HEADER| 00002320: 20 2E 42 59 54 20 31 34 37 2C 27 48 41 52 44 20 | .BYT 147,'HARD | 00002330: 44 49 53 4B 20 46 4F 52 4D 41 54 45 52 27 2C 31 |DISK FORMATER',1| 00002340: 33 2C 31 33 2C 30 0D 52 45 53 45 54 45 20 2E 42 |3,13,0.RESETE .B| 00002350: 59 54 20 31 33 2C 27 45 20 52 20 52 20 4F 20 52 |YT 13,'E R R O R| 00002360: 20 4F 4E 20 52 45 53 45 54 20 43 4F 4D 4D 41 4E | ON RESET COMMAN| 00002370: 44 27 2C 31 33 2C 30 0D 4C 4F 57 4C 56 4C 20 2E |D',13,0.LOWLVL .| 00002380: 42 59 54 20 31 33 2C 27 44 4F 20 4C 4F 57 20 4C |BYT 13,'DO LOW L| 00002390: 45 56 45 4C 20 46 4F 52 4D 41 54 3F 20 27 0D 20 |EVEL FORMAT? '. | 000023A0: 2E 42 59 54 20 27 28 59 20 4F 52 20 4E 29 27 2C |.BYT '(Y OR N)',| 000023B0: 31 33 2C 30 0D 4C 4F 57 45 52 52 20 2E 42 59 54 |13,0.LOWERR .BYT| 000023C0: 20 31 33 2C 27 45 20 52 20 52 20 4F 20 52 20 4F | 13,'E R R O R O| 000023D0: 4E 20 4C 4F 57 20 4C 45 56 45 4C 27 2C 31 33 2C |N LOW LEVEL',13,| 000023E0: 30 0D 57 52 54 45 52 52 20 2E 42 59 54 20 31 33 |0.WRTERR .BYT 13| 000023F0: 2C 27 57 52 49 54 45 20 45 52 52 4F 52 27 2C 31 |,'WRITE ERROR',1| 00002400: 33 2C 30 0D 54 4F 4F 4D 41 4E 59 42 41 44 4D 53 |3,0.TOOMANYBADMS| 00002410: 47 20 2E 42 59 54 20 31 33 2C 27 54 4F 4F 20 4D |G .BYT 13,'TOO M| 00002420: 41 4E 59 20 42 41 44 20 53 45 43 54 4F 52 53 20 |ANY BAD SECTORS | 00002430: 27 0D 20 2E 42 59 54 20 27 46 4F 52 4D 41 54 20 |'. .BYT 'FORMAT | 00002440: 54 45 52 4D 49 4E 41 54 45 44 21 21 21 27 2C 31 |TERMINATED!!!',1| 00002450: 33 2C 30 0D 52 45 41 44 45 52 20 2E 42 59 54 20 |3,0.READER .BYT | 00002460: 31 33 2C 27 52 45 41 44 20 45 52 52 4F 52 27 2C |13,'READ ERROR',| 00002470: 31 33 2C 30 0D 46 49 4E 49 53 48 20 2E 42 59 54 |13,0.FINISH .BYT| 00002480: 20 31 33 2C 27 45 4E 44 20 4F 46 20 46 4F 52 4D | 13,'END OF FORM| 00002490: 41 54 27 2C 31 33 2C 30 0D 43 4F 4D 45 52 52 20 |AT',13,0.COMERR | 000024A0: 2E 42 59 54 20 31 33 2C 27 42 4C 4F 43 4B 20 43 |.BYT 13,'BLOCK C| 000024B0: 4F 4D 50 41 52 45 20 45 52 52 4F 52 27 2C 31 33 |OMPARE ERROR',13| 000024C0: 2C 30 0D 48 4F 57 4D 53 47 20 2E 42 59 54 20 31 |,0.HOWMSG .BYT 1| 000024D0: 33 2C 31 33 2C 27 44 4F 20 49 4E 54 45 4E 53 49 |3,13,'DO INTENSI| 000024E0: 56 45 20 46 4F 52 4D 41 54 3F 27 0D 20 2E 42 59 |VE FORMAT?'. .BY| 000024F0: 54 20 27 20 3C 59 20 4F 52 20 4E 3E 20 27 2C 30 |T ' <Y OR N> ',0| 00002500: 0D 49 4E 50 55 54 4E 55 4D 43 59 4C 53 20 2E 42 |.INPUTNUMCYLS .B| 00002510: 59 54 20 31 33 2C 27 45 4E 54 45 52 20 54 4F 54 |YT 13,'ENTER TOT| 00002520: 41 4C 20 4E 55 4D 42 45 52 20 4F 46 27 0D 20 2E |AL NUMBER OF'. .| 00002530: 42 59 54 20 27 20 43 59 4C 49 4E 44 45 52 53 20 |BYT ' CYLINDERS | 00002540: 27 2C 30 0D 49 4E 50 55 54 4E 55 4D 48 45 41 44 |',0.INPUTNUMHEAD| 00002550: 53 20 2E 42 59 54 20 31 33 2C 27 45 4E 54 45 52 |S .BYT 13,'ENTER| 00002560: 20 4E 55 4D 42 45 52 20 4F 46 20 48 45 41 44 53 | NUMBER OF HEADS| 00002570: 20 27 2C 30 0D 49 4E 50 55 54 50 52 45 43 4F 4D | ',0.INPUTPRECOM| 00002580: 50 20 2E 42 59 54 20 31 33 2C 27 43 59 4C 49 4E |P .BYT 13,'CYLIN| 00002590: 44 45 52 20 4E 55 4D 42 45 52 20 27 0D 20 2E 42 |DER NUMBER '. .B| 000025A0: 59 54 20 27 46 4F 52 20 53 54 41 52 54 20 50 52 |YT 'FOR START PR| 000025B0: 45 43 4F 4D 50 20 27 2C 30 0D 49 4E 50 55 54 52 |ECOMP ',0.INPUTR| 000025C0: 45 44 55 43 45 44 20 2E 42 59 54 20 31 33 2C 27 |EDUCED .BYT 13,'| 000025D0: 43 59 4C 49 4E 44 45 52 20 4E 55 4D 42 45 52 20 |CYLINDER NUMBER | 000025E0: 27 0D 20 2E 42 59 54 20 27 46 4F 52 20 52 45 44 |'. .BYT 'FOR RED| 000025F0: 55 43 45 44 20 57 52 49 54 45 20 43 55 52 52 45 |UCED WRITE CURRE| 00002600: 4E 54 20 27 2C 30 0D 49 4E 50 55 54 42 55 52 53 |NT ',0.INPUTBURS| 00002610: 54 4C 45 4E 20 2E 42 59 54 20 31 33 2C 27 4D 41 |TLEN .BYT 13,'MA| 00002620: 58 20 43 4F 52 52 45 43 54 41 42 4C 45 20 45 52 |X CORRECTABLE ER| 00002630: 52 4F 52 20 27 0D 20 2E 42 59 54 20 27 42 55 52 |ROR '. .BYT 'BUR| 00002640: 53 54 20 4C 45 4E 47 54 48 20 28 35 20 2D 20 31 |ST LENGTH (5 - 1| 00002650: 31 29 20 27 2C 30 0D 49 4E 50 55 54 53 54 45 50 |1) ',0.INPUTSTEP| 00002660: 52 41 54 45 20 2E 42 59 54 20 31 33 2C 27 53 54 |RATE .BYT 13,'ST| 00002670: 45 50 20 52 41 54 45 20 27 2C 30 0D 49 4E 54 45 |EP RATE ',0.INTE| 00002680: 4E 53 49 56 45 46 4C 41 47 20 2E 42 59 54 20 30 |NSIVEFLAG .BYT 0| 00002690: 20 3B 49 4E 54 45 4E 53 45 20 46 4C 41 47 0D 48 | ;INTENSE FLAG.H| 000026A0: 45 41 44 43 4F 55 4E 54 45 52 20 2E 42 59 54 20 |EADCOUNTER .BYT | 000026B0: 30 20 3B 43 4F 55 4E 54 20 55 50 20 48 45 41 44 |0 ;COUNT UP HEAD| 000026C0: 0D 43 59 4C 49 4E 44 45 52 43 4F 55 4E 54 52 20 |.CYLINDERCOUNTR | 000026D0: 2E 57 4F 52 20 30 20 3B 43 4F 55 4E 54 20 55 50 |.WOR 0 ;COUNT UP| 000026E0: 20 43 59 4C 49 4E 44 45 52 53 0D 53 45 43 54 4F | CYLINDERS.SECTO| 000026F0: 52 43 4F 55 4E 54 45 52 20 2E 42 59 54 20 30 20 |RCOUNTER .BYT 0 | 00002700: 3B 53 45 43 54 4F 52 20 43 4F 55 4E 54 45 52 0D |;SECTOR COUNTER.| 00002710: 52 44 52 45 54 52 59 43 4F 55 4E 54 45 52 20 2E |RDRETRYCOUNTER .| 00002720: 42 59 54 20 30 0D 57 52 54 52 45 54 52 59 43 4F |BYT 0.WRTRETRYCO| 00002730: 55 4E 54 52 20 2E 42 59 54 20 30 0D 42 41 44 53 |UNTR .BYT 0.BADS| 00002740: 45 43 54 4F 52 43 54 52 20 2E 42 59 54 20 30 20 |ECTORCTR .BYT 0 | 00002750: 3B 43 4F 55 4E 54 45 52 20 46 4F 52 20 53 45 43 |;COUNTER FOR SEC| 00002760: 54 4F 52 53 20 53 45 43 54 4F 52 0D 45 52 52 4F |TORS SECTOR.ERRO| 00002770: 52 43 4F 44 45 20 2E 42 59 54 20 30 0D 43 55 52 |RCODE .BYT 0.CUR| 00002780: 52 45 4E 54 53 45 4E 53 45 20 2E 42 59 54 20 30 |RENTSENSE .BYT 0| 00002790: 2C 30 2C 30 2C 30 0D 3B 2B 20 53 54 4F 52 41 47 |,0,0,0.;+ STORAG| 000027A0: 45 20 41 52 45 41 0D 42 55 46 46 45 52 20 2E 57 |E AREA.BUFFER .W| 000027B0: 4F 52 20 30 0D 20 2E 42 59 54 20 27 43 41 4C 43 |OR 0. .BYT 'CALC| 000027C0: 55 4C 41 54 45 44 20 56 41 4C 55 45 53 27 0D 54 |ULATED VALUES'.T| 000027D0: 4F 54 41 4C 53 45 43 54 4F 52 53 20 2E 42 59 54 |OTALSECTORS .BYT| 000027E0: 20 30 2C 30 2C 30 20 3B 54 4F 54 41 4C 20 53 45 | 0,0,0 ;TOTAL SE| 000027F0: 43 54 4F 52 53 0D 4C 41 53 54 53 41 54 53 45 43 |CTORS.LASTSATSEC| 00002800: 54 4F 52 20 2E 42 59 54 20 30 20 3B 4C 41 53 54 |TOR .BYT 0 ;LAST| 00002810: 20 53 41 54 20 53 45 43 54 4F 52 20 4E 55 4D 42 | SAT SECTOR NUMB| 00002820: 45 52 0D 4C 41 53 54 53 41 54 42 59 54 45 20 2E |ER.LASTSATBYTE .| 00002830: 57 4F 52 20 30 20 3B 42 59 54 45 20 4F 46 46 53 |WOR 0 ;BYTE OFFS| 00002840: 45 54 20 4F 46 20 4C 41 53 54 20 53 41 54 20 42 |ET OF LAST SAT B| 00002850: 59 54 45 0D 4C 41 53 54 53 41 54 42 49 54 20 2E |YTE.LASTSATBIT .| 00002860: 42 59 54 20 30 20 3B 42 49 54 20 4F 46 20 4C 41 |BYT 0 ;BIT OF LA| 00002870: 53 54 20 42 59 54 45 0D 53 45 43 54 4F 52 50 45 |ST BYTE.SECTORPE| 00002880: 52 43 59 4C 20 2E 57 4F 52 20 30 20 3B 4E 55 4D |RCYL .WOR 0 ;NUM| 00002890: 42 45 52 20 53 45 43 54 4F 52 53 2F 43 59 4C 0D |BER SECTORS/CYL.| 000028A0: 4E 55 4D 42 45 52 4F 46 48 45 41 44 53 20 2E 42 |NUMBEROFHEADS .B| 000028B0: 59 54 20 30 20 3B 4E 55 4D 42 45 52 20 48 45 41 |YT 0 ;NUMBER HEA| 000028C0: 44 53 0D 4E 55 4D 43 59 4C 49 4E 44 45 52 53 20 |DS.NUMCYLINDERS | 000028D0: 2E 57 4F 52 20 30 20 3B 4E 55 4D 42 45 52 20 43 |.WOR 0 ;NUMBER C| 000028E0: 59 4C 49 4E 44 45 52 53 0D 2A 20 3D 20 42 55 46 |YLINDERS.* = BUF| 000028F0: 46 45 52 2B 35 31 32 0D 52 44 42 55 46 20 3D 20 |FER+512.RDBUF = | 00002900: 2A 0D 2A 20 3D 20 52 44 42 55 46 2B 35 31 32 0D |*.* = RDBUF+512.| 00002910: 57 52 54 42 55 46 20 3D 20 2A 0D 2A 20 3D 20 57 |WRTBUF = *.* = W| 00002920: 52 54 42 55 46 2B 35 31 32 0D 42 41 44 53 45 43 |RTBUF+512.BADSEC| 00002930: 54 4F 52 53 20 3D 20 2A 0D 2A 20 3D 20 42 41 44 |TORS = *.* = BAD| 00002940: 53 45 43 54 4F 52 53 2B 31 30 32 34 0D 2E 45 4E |SECTORS+1024..EN| 00002950: 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |D...............| 00002960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00002970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
;BPUT"FORMAT.SRC".;RPUT"FORMAT.SRC".;+++
++++++++++++++++++++++++++++++.;+ INITI
ALIZE THE HARD DISK +.;+
+.;+ INTERFACES WITH
THE BIOS FOR +.;+ HARD DRIVE....
+.;++++++++++++++++++++++++++++
+++++.;.READ = $7000 ;EQUATES FOR BIOS.W
RITE = READ+3.RESET = READ+6.SETPRM = RE
AD+9.RECAL = READ+12.SEEK = READ+15.TDRE
DY = READ+18 ;TEST DRIVE READY.SBDIAG =
READ+21 ;SECTOR BUF DIAG.DRDIAG = READ+2
4 ;DRIVE DIAGS.CTDIAG = READ+27 ;CONTROL
LER DIAGS.FBADTK = READ+30 ;FORMAT BAD T
RK.FMTTRK = READ+33 ;FORMAT TRACK.FMTDRV
= READ+36 ;FORMAT DRIVE.RETPRM = READ+3
9 ;RETURN PARMS. ;INPUT - A = DRIVE NUMB
ER. ;OUTPUT - A = # HEADS. ; X =
MSB #CYLS. ; Y = LSB #CYLS.RDLO
NG = READ+42.READSB = READ+45.WRLONG = R
EAD+48.WRITSB = READ+51.VERIFY = READ+54
.DCBPTR = READ+57 ;POINTER TO DCB.* = $6
000.START = * ;BEGIN FORMAT. LDA #0 ;CLE
AR THE BUFFERS. TAY.CLEARBADSECTOR STA B
ADSECTORS,Y. STA BADSECTORS+256,Y. STA B
ADSECTORS+512,Y. STA BADSECTORS+768,Y. S
TA RDBUF,Y. STA RDBUF+256,Y. STA WRTBUF,
Y. STA WRTBUF+256,Y. INY. BNE CLEARBADSE
CTOR. LDA #4 ;2 TIMES # SECTORS FOR BAD
SECTORS. STA BADSECTORCTR. LDA #<HEADING
MSG ;CLEAR SCREEN,ETC. JSR WRITEOUTAMSG.
LDA DCBPTR. STA PTR1. STA PTRX. STA DCB
PTRFORGET. LDA DCBPTR+1. STA PTR2 ;ADDRE
SS THE DCB. STA PTRX+1. STA DCBPTRFORGET
+1. LDA #0 ;SET UP FOR DRIVE 0. JSR PUTD
CBDRIVE ;SET UP DRIVE 0. JSR RESET. BCC
RESETISOK ;GO IF NO ERROR. LDA #<RESETER
RORMSG ;ISSUE MSG. JSR WRITEOUTAMSG. BRK
.RESETISOK LDA #0 ;RESTORE DRIVE 0. JSR
PUTDCBDRIVE. JSR PUTDCBMSBSECTR ;SET SEC
TOR. JSR PUTDCBCYLLSB ;AND CYL. LDA #11
;INTERLEAVE, TEST SHOWS 11 GOOD. JSR PUT
DCBNUMSECS. LDA #<BUFFER. JSR PUTDCBLOBU
FPTR. LDA #>BUFFER. JSR PUTDCBHIBUFPTR.
JSR RETPRM ;GET THE PARMS. DEY ;BACK DOW
N CYLINDERS BY 1. BNE SAVETHEPARMS. DEX.
SAVETHEPARMS STX CYLMSB. STX NUMCYLINDER
S ;SAVE. STY NUMCYLINDERS+1. STA NUMBERO
FHEADS. STY CYLLSB. LDA #16 ;SET SECTOR
NUMBER TO MAX. STA SECTOR. JSR CYLINDER2
SECTR ;CONVERT. LDX SECNUM ;MOVE AND PRI
ME. LDA SECNUM+1 ;FOR SECTOR TO SAT. LDY
SECNUM+2 ;CONVERSION. STX TOTALSECTORS.
STA TOTALSECTORS+1. STY TOTALSECTORS+2.
JSR SECTOR2SAT ;GO CONVERT. LDA SATSEC
;SAVE FOR LATER. STA LASTSATSECTOR. LDA
SATBYT. STA LASTSATBYTE. LDA SATBYT+1. S
TA LASTSATBYTE+1. LDA SATBIT. STA LASTSA
TBIT.CHECKLOWLEVEL LDA #<LOWLEVELMSG ;AS
K ABOUT LOLEVEL. JSR WRITEOUTAMSG.LOWLEV
ELANSWER JSR $FFE4. JSR $FFD2. CMP #'N'
;NO LOW LEVEL. BEQ SETUPCOUNTERS. CMP #'
Y' ;DO IT?. BNE LOWLEVELANSWER. JSR FMTD
RV ;LOW LEVEL IT. BCC SETUPCOUNTERS. LDA
#<LOWLEVELERRMSG ;ERROR MSG. JSR WRITEO
UTAMSG. BRK.SETUPCOUNTERS = *. LDA #0. S
TA CYLINDERCOUNTR ;CLEAR COUNTERS. STA C
YLINDERCOUNTR+1. STA HEADCOUNTER. STA SE
CTORCOUNTER. LDX #0.FILLBUFFER TXA. STA
WRTBUF,X. STA WRTBUF+256,X. INX. BNE FIL
LBUFFER. LDA #147. JSR $FFD2. LDA #<INTE
NSIVEMSG ;WHAT KIND?. JSR WRITEOUTAMSG.I
NTENSEANSWER JSR $FFE4 ;GET ANSWER. CMP
#'N' ;NOT INTENSIVE. BEQ NOTINTENSIVE. C
MP #'Y' ;YES?. BNE INTENSEANSWER. LDX #0
. .BYT $2C.NOTINTENSIVE LDX #$FF. STX IN
TENSIVEFLAG ;SET MODE FLAG. JSR $FFD2.FO
RMATDRIVE LDA #5 ;CLEAR RETRY COUNTER. S
TA WRTRETRYCOUNTR. STA RDRETRYCOUNTER. L
DA CYLINDERCOUNTR+1. JSR HEXTOASCII ;MAK
E PRINTABLE. STA $041E. STX $041F. LDA C
YLINDERCOUNTR. JSR HEXTOASCII. STA $0420
. STX $0421. LDA #32. STA $0422. LDA HEA
DCOUNTER. JSR HEXTOASCII. STA $0423. STX
$0424. LDA #32. STA $0425. LDA SECTORCO
UNTER. JSR HEXTOASCII. STA $0426. STX $0
427. JSR SETUPDCB ;SET UP DCB. LDA INTEN
SIVEFLAG ;CHECK FOR INTENSE FORMAT. BNE
BYPASSWRITE ;BYPASS WRITE. LDA #<WRTBUF.
JSR PUTDCBLOBUFPTR. LDA #>WRTBUF. JSR P
UTDCBHIBUFPTR.WRITEASECTOR JSR WRITE ;GO
WRITE A BLOCK. BCC BYPASSWRITE. JSR REA
DTHESENSE ;RETRIEVE SENSE. JSR WRITEOUTS
ENSE. JSR RESETFORRETRY ; SET UP FOR RET
RY. DEC WRTRETRYCOUNTR. BNE WRITEASECTOR
. LDA #<WRITEERRORMSG ;WRITE ERROR. JSR
WRITEOUTAMSG. JSR MARKBADSECTOR ;MARK AS
BAD. JMP ONTONEXTSECTOR ;GO TO NEXT SEC
TOR.BYPASSWRITE LDA #<RDBUF. JSR PUTDCBL
OBUFPTR. LDA #>RDBUF. JSR PUTDCBHIBUFPTR
.READASECTOR JSR READ. BCC ISITINTENSIVE
. JSR READTHESENSE ;RETRIEVE SENSE. JSR
WRITEOUTSENSE. LDA #<RDERRORMSG ;READ ER
ROR.READRETRY PHA ;SAVE MSG NUMBER. JSR
RESETFORRETRY ;SET UP FOR RETRY. PLA ;RE
TRIEVE MSG NUMBER. DEC RDRETRYCOUNTER ;C
HECK FOR MAX NUM. BNE READASECTOR. JSR W
RITEOUTAMSG. JSR MARKBADSECTOR. JMP ONTO
NEXTSECTOR.ISITINTENSIVE LDA INTENSIVEFL
AG ;CHECK FOR INSTENSE. BNE ONTONEXTSECT
OR ;BYPASS COMPARE. LDY #0 ;SET UP FOR C
OMPARE.COMPARESECTORS LDA WRTBUF,Y. CMP
RDBUF,Y. BNE BADCOMPARE. LDA WRTBUF+256,
Y. CMP RDBUF+256,Y. BEQ COMPARENEXT.BADC
OMPARE LDA #<COMPAREERRMSG. BNE READRETR
Y.COMPARENEXT INY. BNE COMPARESECTORS.ON
TONEXTSECTOR LDX SECTORCOUNTER ;CHECK SE
CTOR. INX. CPX #17. BNE BUMPTHEHEAD. LDX
#0.BUMPTHEHEAD STX SECTORCOUNTER ;SAVE
SECTOR. BNE GOTNEWADDRESS ;GO ON IF BELO
W. LDX HEADCOUNTER ;BUMP TO NEXT HEAD. I
NX. CPX NUMBEROFHEADS ;AT MAX?. BNE SAVE
HEADCOUNT. LDX #0.SAVEHEADCOUNT STX HEAD
COUNTER. BNE GOTNEWADDRESS. LDA $DC0B ;G
ET HRS STOP CLOCK. LDA $DC09 ;GET SECOND
S. JSR HEXTOASCII. STA $410. STX $411. L
DA #':'. STA $412. LDA $DC08. JSR HEXTOA
SCII. STX $0413. STA $0414. LDA $DC0F. A
ND #$7F. STA $DC0F. LDA #$00. LDX #4.SET
TIMETOZERO STA $DC08,X. DEX. BPL SETTIME
TOZERO. LDX CYLINDERCOUNTR ;CHECK FOR EN
D. CPX NUMCYLINDERS. BNE BUMPCYLINDERLO.
LDX CYLINDERCOUNTR+1. CPX NUMCYLINDERS+
1. BEQ ENDOFFORMAT.BUMPCYLINDERLO INC CY
LINDERCOUNTR ;BUMP BY ONE. BEQ BUMPCYLIN
DERHI.GOTNEWADDRESS JMP FORMATDRIVE.BUMP
CYLINDERHI INC CYLINDERCOUNTR+1. JMP FOR
MATDRIVE.ENDOFFORMAT LDA #<ENDOFJOBMSG.
JSR WRITEOUTAMSG. BRK.;.;+++++++++++++++
++++++++++++++++++.;+ SET DCB FIELD
+.;+
+.;+ INPUT - A = BYTE TO PUT
+.;+ X = OFFSET IN DCB +.;
+++++++++++++++++++++++++++++++++.;.PUTD
CBCOMMAND LDX #0 ;OFFSET 0. .BYT $2C ;BI
T.PUTDCBHEAD = * ;SAME AS PUT DRIVE.PUTD
CBDRIVE LDX #1 ;OFFSET 1. .BYT $2C ;BIT.
PUTDCBMSBSECTR LDX #2 ;OFFSET 2. .BYT $2
C ;BIT.PUTDCBCYLLSB LDX #3 ;OFFSET 3. .B
YT $2C ;BIT.PUTDCBNUMSECS LDX #4 ;OFFSET
4. .BYT $2C ;BIT.PUTDCBSTEP LDX #5 ;OFF
SET 5. .BYT $2C ;BIT.PUTDCBLOBUFPTR LDX
#6 ;OFFSET 6. .BYT $2C ;BIT.PUTDCBHIBUFP
TR LDX #7 ;OFFSET 7.PUTDCB STA PUTDCB,X.
PTR1 = PUTDCB+1.PTR2 = PUTDCB+2. RTS ; S
HORT AND SWEET??.;.READTHESENSE LDY #12
;OFFSET TO SENSE. STA ERRORCODE ;SAVE ER
ROR CODE. LDX #0.GETALLTHESENSE LDA GETA
LLTHESENSE,Y.PTRX = GETALLTHESENSE+1. ST
A CURRENTSENSE,X ;PUT IN BUFFER. INX. IN
Y. CPX #4. BNE GETALLTHESENSE. RTS.;.GET
DCBCOMMAND LDY #0. .BYT $2C.GETDCBHEAD L
DY #1. .BYT $2C.GETDCBSECTOR LDY #2. .BY
T $2C.GETDCBCYLLSB LDY #3.;.GETDCBINFO L
DA GETDCBINFO,Y ;Y HAS OFFSET.DCBPTRFORG
ET = GETDCBINFO+1. RTS.;.;.WRITEOUTHEX P
HA. AND #$F0 ;HIGH NYBLE FIRST. LSR A. L
SR A. LSR A. LSR A. JSR ISITATHRUF. PLA.
AND #$0F.ISITATHRUF CMP #$0A. BCC ADDAS
CIIZERO. ADC #6 ;ADD SEVEN.ADDASCIIZERO
ADC #$30. JMP $FFD2.HEXTOASCII PHA. AND
#$0F ;GET LOW NYBLE. JSR BIGGERTHAN9. TA
X. PLA. AND #$F0 ;NOW HI NYBLE. LSR A. L
SR A. LSR A. LSR A.BIGGERTHAN9 CMP #$0A.
BCC ADDAZERO. SBC #9. RTS. ADC #6 ;ADD
SEVEN.ADDAZERO ADC #$30. RTS.;.WRITEOUTS
ENSE LDY #0.WRITEALLSENSE LDA ERRORCODE,
Y ;GET ERRORCODE AND SENSE. JSR WRITEOUT
HEX ;WRITE IT. LDA #32. JSR $FFD2. INY.
CPY #5 ;GOT EM ALL?. BNE WRITEALLSENSE.
LDA #13. JMP $FFD2.;.WRITEOUTAMSG TAX ;G
ET INDEX INTO TABLE. LDA MTAB,X. STA MPT
R. LDA MTAB+1,X. STA MPTR+1. LDY #0.WRIT
EMSGLOOP LDA WRITEMSGLOOP,Y.MPTR = WRITE
MSGLOOP+1. BEQ ENDOFMESSAGE. JSR $FFD2.
INY. BNE WRITEMSGLOOP.ENDOFMESSAGE RTS.;
.RESETFORRETRY JSR RESET.SETUPDCB LDA HE
ADCOUNTER ;SET HEAD NUMBER. JSR PUTDCBHE
AD ;PUT HEAD # IN DCB. LDA CYLINDERCOUNT
R+1 ;GET CYL #HI. ASL A ;MOVE TO HIGH BI
TS. ASL A. ASL A. ASL A. ASL A. ASL A. O
RA SECTORCOUNTER. JSR PUTDCBMSBSECTR ;MS
B CYL AND SECTOR. LDA CYLINDERCOUNTR ;LS
B CYL. JSR PUTDCBCYLLSB. LDA #1 ;SET NUM
BLOCKS. JMP PUTDCBNUMSECS.;.MARKBADSECT
OR JSR GETDCBHEAD. AND #$0F ;CLEAR DRIVE
NUMBER. JSR PUTBADSECTOR. JSR GETDCBSEC
TOR. JSR PUTBADSECTOR. JSR GETDCBCYLLSB.
JSR PUTBADSECTOR. RTS.PUTBADSECTOR STA
BADSECTORS. INC PUTBADSECTOR+1. BNE PUTB
ADSECEND. INC PUTBADSECTOR+2. DEC BADSEC
TORCTR ;BACK OFF USED SPACE. BNE PUTBADS
ECEND. LDA #<TOOMANYBAD ;TOO MANY BAD SE
CTORS. JSR WRITEOUTAMSG. PLA ;TERMINATE
NOW!. PLA ;BY PULLING OFF THE RETURN. PL
A ;TWICE. PLA.PUTBADSECEND RTS.;..LIB C2
SEC14.SRC.;.;+++ MESSAGE TABLE +++.MTAB
= *.HEADINGMSG = *-MTAB. .WOR HEADER.RES
ETERRORMSG = *-MTAB. .WOR RESETE ;ERROR
ON RESET.TOOMANYBAD = *-MTAB. .WOR TOOMA
NYBADMSG.LOWLEVELMSG = *-MTAB. .WOR LOWL
VL.LOWLEVELERRMSG = *-MTAB. .WOR LOWERR
;ERROR ON LOW LEVEL.WRITEERRORMSG = *-MT
AB. .WOR WRTERR ;WRITE ERROR.RDERRORMSG
= *-MTAB. .WOR READER ;READ ERROR.ENDOFJ
OBMSG = *-MTAB. .WOR FINISH ;END OF JOB
MSG.COMPAREERRMSG = *-MTAB. .WOR COMERR
;COMPARE ERROR MSG.INTENSIVEMSG = *-MTAB
. .WOR HOWMSG ;WHAT KIND OF FORMAT.NUMCY
LSMSG = *-MTAB. .WOR INPUTNUMCYLS ;TOTAL
NUMBER OF CYLS MSG.NUMHEADSMSG = *-MTAB
. .WOR INPUTNUMHEADS.REDUCEDWRTMSG = *-M
TAB. .WOR INPUTREDUCED.PRECOMPMSG = *-MT
AB. .WOR INPUTPRECOMP.BURSTLENMSG = *-MT
AB. .WOR INPUTBURSTLEN.STEPRATEMSG = *-M
TAB. .WOR INPUTSTEPRATE.;.HEADER .BYT 14
7,'HARD DISK FORMATER',13,13,0.RESETE .B
YT 13,'E R R O R ON RESET COMMAND',13,0.
LOWLVL .BYT 13,'DO LOW LEVEL FORMAT? '.
.BYT '(Y OR N)',13,0.LOWERR .BYT 13,'E R
R O R ON LOW LEVEL',13,0.WRTERR .BYT 13
,'WRITE ERROR',13,0.TOOMANYBADMSG .BYT 1
3,'TOO MANY BAD SECTORS '. .BYT 'FORMAT
TERMINATED!!!',13,0.READER .BYT 13,'READ
ERROR',13,0.FINISH .BYT 13,'END OF FORM
AT',13,0.COMERR .BYT 13,'BLOCK COMPARE E
RROR',13,0.HOWMSG .BYT 13,13,'DO INTENSI
VE FORMAT?'. .BYT ' <Y OR N> ',0.INPUTNU
MCYLS .BYT 13,'ENTER TOTAL NUMBER OF'. .
BYT ' CYLINDERS ',0.INPUTNUMHEADS .BYT 1
3,'ENTER NUMBER OF HEADS ',0.INPUTPRECOM
P .BYT 13,'CYLINDER NUMBER '. .BYT 'FOR
START PRECOMP ',0.INPUTREDUCED .BYT 13,'
CYLINDER NUMBER '. .BYT 'FOR REDUCED WRI
TE CURRENT ',0.INPUTBURSTLEN .BYT 13,'MA
X CORRECTABLE ERROR '. .BYT 'BURST LENGT
H (5 - 11) ',0.INPUTSTEPRATE .BYT 13,'ST
EP RATE ',0.INTENSIVEFLAG .BYT 0 ;INTENS
E FLAG.HEADCOUNTER .BYT 0 ;COUNT UP HEAD
.CYLINDERCOUNTR .WOR 0 ;COUNT UP CYLINDE
RS.SECTORCOUNTER .BYT 0 ;SECTOR COUNTER.
RDRETRYCOUNTER .BYT 0.WRTRETRYCOUNTR .BY
T 0.BADSECTORCTR .BYT 0 ;COUNTER FOR SEC
TORS SECTOR.ERRORCODE .BYT 0.CURRENTSENS
E .BYT 0,0,0,0.;+ STORAGE AREA.BUFFER .W
OR 0. .BYT 'CALCULATED VALUES'.TOTALSECT
ORS .BYT 0,0,0 ;TOTAL SECTORS.LASTSATSEC
TOR .BYT 0 ;LAST SAT SECTOR NUMBER.LASTS
ATBYTE .WOR 0 ;BYTE OFFSET OF LAST SAT B
YTE.LASTSATBIT .BYT 0 ;BIT OF LAST BYTE.
SECTORPERCYL .WOR 0 ;NUMBER SECTORS/CYL.
NUMBEROFHEADS .BYT 0 ;NUMBER HEADS.NUMCY
LINDERS .WOR 0 ;NUMBER CYLINDERS.* = BUF
FER+512.RDBUF = *.* = RDBUF+512.WRTBUF =
*.* = WRTBUF+512.BADSECTORS = *.* = BAD
SECTORS+1024..END.......................
........................
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL