C64SAT.SRC
FILE INFORMATION
FILENAME(S): C64SAT.SRC
FILE TYPE(S): SEQ
FILE SIZE: 3.9K
FIRST SEEN: 2025-11-30 16:59:23
APPEARS ON: 1 disk(s)
FILE HASH
7aa9da80c8076fb1cc6342deb470d37ac8a4a3761afa11c743dcd712dae7c6b7
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| 64HDPROJ | C64SAT.SRC | SEQ | High Voltage Complete C64 Collection | 16 | 9 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B 42 50 55 54 22 53 41 54 2E 53 52 43 0D 3B 52 |;BPUT"SAT.SRC.;R| 00000010: 50 55 54 22 53 41 54 2E 53 52 43 0D 3B 0D 3B 2B |PUT"SAT.SRC.;.;+| 00000020: 2B 2B 2B 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: 0D 3B 2B 20 20 41 4C 4C 4F 43 41 54 45 20 41 4E |.;+ ALLOCATE AN| 00000050: 44 20 44 45 2D 41 4C 4C 4F 43 41 54 45 20 20 20 |D DE-ALLOCATE | 00000060: 20 20 2B 0D 3B 2B 20 20 41 20 53 45 43 54 4F 52 | +.;+ A SECTOR| 00000070: 20 49 4E 20 54 48 45 20 53 45 43 54 4F 52 20 20 | IN THE SECTOR | 00000080: 20 20 20 20 20 2B 0D 3B 2B 20 20 41 4C 4C 4F 43 | +.;+ ALLOC| 00000090: 41 54 49 4F 4E 20 54 41 42 4C 45 2E 20 20 20 20 |ATION TABLE. | 000000A0: 20 20 20 20 20 20 20 20 2B 0D 3B 2B 20 20 20 20 | +.;+ | 000000B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000000C0: 20 20 20 20 20 20 20 20 20 20 20 2B 0D 3B 2B 20 | +.;+ | 000000D0: 49 4E 50 55 54 20 46 4F 52 20 44 45 2D 41 4C 4C |INPUT FOR DE-ALL| 000000E0: 4F 43 41 54 45 3A 20 20 20 20 20 20 20 20 2B 0D |OCATE: +.| 000000F0: 3B 2B 20 20 20 20 53 45 43 54 4F 52 20 4E 55 4D |;+ SECTOR NUM| 00000100: 42 45 52 20 54 4F 20 46 52 45 45 2E 20 20 20 20 |BER TO FREE. | 00000110: 20 2B 0D 3B 2B 20 20 20 20 20 20 20 20 20 20 20 | +.;+ | 00000120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000130: 20 20 20 20 2B 0D 3B 2B 20 4F 55 54 50 55 54 20 | +.;+ OUTPUT | 00000140: 46 4F 52 20 44 45 2D 41 4C 4C 4F 43 41 54 45 3A |FOR DE-ALLOCATE:| 00000150: 20 20 20 20 20 20 20 2B 0D 3B 2B 20 20 20 20 53 | +.;+ S| 00000160: 41 54 42 49 54 20 49 53 20 53 45 54 20 4F 4E 2E |ATBIT IS SET ON.| 00000170: 20 20 20 20 20 20 20 20 20 20 2B 0D 3B 2B 20 20 | +.;+ | 00000180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000190: 20 20 20 20 20 20 20 20 20 20 20 20 20 2B 0D 3B | +.;| 000001A0: 2B 20 49 4E 50 55 54 20 46 4F 52 20 41 4C 4C 4F |+ INPUT FOR ALLO| 000001B0: 43 41 54 45 3A 20 4E 4F 4E 45 20 20 20 20 20 20 |CATE: NONE | 000001C0: 2B 0D 3B 2B 20 20 20 20 20 20 20 20 20 20 20 20 |+.;+ | 000001D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000001E0: 20 20 20 2B 0D 3B 2B 20 4F 55 54 50 55 54 20 46 | +.;+ OUTPUT F| 000001F0: 4F 52 20 41 4C 4C 4F 43 41 54 45 3A 20 20 20 20 |OR ALLOCATE: | 00000200: 20 20 20 20 20 20 2B 0D 3B 2B 20 20 20 20 53 41 | +.;+ SA| 00000210: 54 42 49 54 20 54 55 52 4E 45 44 20 4F 46 46 2C |TBIT TURNED OFF,| 00000220: 20 41 4E 44 20 20 20 20 20 2B 0D 3B 2B 20 20 20 | AND +.;+ | 00000230: 20 53 45 43 54 4F 52 20 4E 55 4D 42 45 52 20 4F | SECTOR NUMBER O| 00000240: 46 20 54 48 45 20 20 20 20 20 20 20 2B 0D 3B 2B |F THE +.;+| 00000250: 20 20 20 20 4E 45 57 4C 59 20 41 4C 4C 4F 43 41 | NEWLY ALLOCA| 00000260: 54 45 44 20 53 45 43 54 4F 52 2E 20 20 20 20 2B |TED SECTOR. +| 00000270: 0D 3B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |.;++++++++++++++| 00000280: 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B 2B |++++++++++++++++| 00000290: 2B 2B 2B 0D 3B 0D 53 41 54 53 45 43 50 54 52 20 |+++.;.SATSECPTR | 000002A0: 3D 20 24 46 42 20 3B 41 4E 44 20 46 43 0D 3B 0D |= $FB ;AND FC.;.| 000002B0: 41 4C 4C 4F 43 41 54 45 53 41 54 20 4C 44 41 20 |ALLOCATESAT LDA | 000002C0: 46 52 45 45 53 41 54 53 45 43 54 4F 52 0D 20 43 |FREESATSECTOR. C| 000002D0: 4D 50 20 43 55 52 52 45 4E 54 53 41 54 20 3B 49 |MP CURRENTSAT ;I| 000002E0: 53 20 49 54 20 53 41 4D 45 20 41 53 20 53 41 54 |S IT SAME AS SAT| 000002F0: 20 49 4E 20 42 55 46 46 45 52 3F 0D 20 42 45 51 | IN BUFFER?. BEQ| 00000300: 20 41 4C 4C 4F 43 41 54 45 53 41 54 31 0D 41 4C | ALLOCATESAT1.AL| 00000310: 4C 4F 43 41 54 45 52 45 41 44 20 4A 53 52 20 52 |LOCATEREAD JSR R| 00000320: 45 41 44 53 41 54 53 45 43 54 4F 52 20 3B 47 4F |EADSATSECTOR ;GO| 00000330: 20 47 45 54 20 54 48 45 20 53 45 43 54 4F 52 0D | GET THE SECTOR.| 00000340: 20 42 43 43 20 41 4C 4C 4F 43 41 54 45 53 41 54 | BCC ALLOCATESAT| 00000350: 31 0D 20 52 54 53 20 3B 52 45 54 55 52 4E 20 57 |1. RTS ;RETURN W| 00000360: 49 54 48 20 45 52 52 4F 52 0D 41 4C 4C 4F 43 41 |ITH ERROR.ALLOCA| 00000370: 54 45 53 41 54 31 20 4A 53 52 20 53 45 54 53 41 |TESAT1 JSR SETSA| 00000380: 54 50 54 52 53 0D 20 4C 44 58 20 23 30 20 3B 53 |TPTRS. LDX #0 ;S| 00000390: 45 54 20 43 4F 55 4E 54 45 52 0D 20 4C 44 59 20 |ET COUNTER. LDY | 000003A0: 23 30 20 3B 49 4E 44 45 58 20 50 4F 49 4E 54 45 |#0 ;INDEX POINTE| 000003B0: 52 0D 41 4C 4C 4F 43 41 54 45 53 41 54 32 20 4C |R.ALLOCATESAT2 L| 000003C0: 44 41 20 28 53 41 54 53 45 43 50 54 52 29 2C 59 |DA (SATSECPTR),Y| 000003D0: 20 3B 41 4E 59 20 46 52 45 45 3F 0D 20 42 4E 45 | ;ANY FREE?. BNE| 000003E0: 20 41 4C 4C 4F 43 41 54 45 53 41 54 33 20 3B 47 | ALLOCATESAT3 ;G| 000003F0: 4F 20 49 46 20 53 4F 0D 20 49 4E 59 0D 20 42 4E |O IF SO. INY. BN| 00000400: 45 20 41 4C 4C 4F 43 41 54 45 53 41 54 32 0D 20 |E ALLOCATESAT2. | 00000410: 49 4E 58 0D 20 43 50 58 20 23 32 20 3B 47 4F 54 |INX. CPX #2 ;GOT| 00000420: 20 45 4D 20 41 4C 4C 3F 0D 20 42 45 51 20 41 4C | EM ALL?. BEQ AL| 00000430: 4C 4F 43 41 54 45 53 41 54 32 41 0D 20 49 4E 43 |LOCATESAT2A. INC| 00000440: 20 53 41 54 53 45 43 50 54 52 2B 31 20 3B 42 55 | SATSECPTR+1 ;BU| 00000450: 4D 50 20 50 41 47 45 0D 20 42 4E 45 20 41 4C 4C |MP PAGE. BNE ALL| 00000460: 4F 43 41 54 45 53 41 54 32 0D 41 4C 4C 4F 43 41 |OCATESAT2.ALLOCA| 00000470: 54 45 53 41 54 32 41 20 3D 20 2A 0D 20 49 4E 43 |TESAT2A = *. INC| 00000480: 20 46 52 45 45 53 41 54 53 45 43 54 4F 52 20 3B | FREESATSECTOR ;| 00000490: 42 55 4D 50 0D 20 4A 53 52 20 44 45 46 53 45 54 |BUMP. JSR DEFSET| 000004A0: 20 3B 47 45 54 20 58 20 50 54 52 20 54 4F 20 54 | ;GET X PTR TO T| 000004B0: 41 42 4C 45 0D 20 4C 44 41 20 46 52 45 45 53 41 |ABLE. LDA FREESA| 000004C0: 54 53 45 43 54 4F 52 20 3B 47 45 54 20 4E 55 4D |TSECTOR ;GET NUM| 000004D0: 42 45 52 0D 20 43 4D 50 20 50 54 46 44 49 52 2C |BER. CMP PTFDIR,| 000004E0: 58 20 3B 57 41 53 20 54 48 45 52 45 20 4E 4F 20 |X ;WAS THERE NO | 000004F0: 52 4F 4F 4D 3F 0D 20 42 4E 45 20 41 4C 4C 4F 43 |ROOM?. BNE ALLOC| 00000500: 41 54 45 52 45 41 44 0D 20 53 45 43 20 3B 52 45 |ATEREAD. SEC ;RE| 00000510: 54 55 52 4E 20 57 49 54 48 20 43 41 52 52 59 20 |TURN WITH CARRY | 00000520: 46 4F 52 20 4E 4F 20 52 4F 4F 4D 0D 20 52 54 53 |FOR NO ROOM. RTS| 00000530: 0D 41 4C 4C 4F 43 41 54 45 53 41 54 33 20 53 54 |.ALLOCATESAT3 ST| 00000540: 59 20 53 41 54 42 59 54 20 3B 53 41 56 45 20 4F |Y SATBYT ;SAVE O| 00000550: 46 46 53 45 54 0D 20 53 54 58 20 53 41 54 42 59 |FFSET. STX SATBY| 00000560: 54 2B 31 0D 20 4C 44 58 20 23 24 38 30 20 3B 53 |T+1. LDX #$80 ;S| 00000570: 45 54 20 42 49 54 20 50 4F 49 4E 54 45 52 0D 20 |ET BIT POINTER. | 00000580: 53 54 58 20 53 41 54 42 49 54 0D 41 4C 4C 4F 43 |STX SATBIT.ALLOC| 00000590: 41 54 45 53 41 54 34 20 41 53 4C 20 41 20 3B 53 |ATESAT4 ASL A ;S| 000005A0: 48 49 46 54 20 41 20 42 49 54 0D 20 42 43 53 20 |HIFT A BIT. BCS | 000005B0: 41 4C 4C 4F 43 41 54 45 53 41 54 35 0D 20 4C 53 |ALLOCATESAT5. LS| 000005C0: 52 20 53 41 54 42 49 54 0D 20 42 4E 45 20 41 4C |R SATBIT. BNE AL| 000005D0: 4C 4F 43 41 54 45 53 41 54 34 0D 41 4C 4C 4F 43 |LOCATESAT4.ALLOC| 000005E0: 41 54 45 53 41 54 35 20 4A 53 52 20 44 45 46 53 |ATESAT5 JSR DEFS| 000005F0: 45 54 20 3B 47 45 54 20 44 52 49 56 45 20 50 54 |ET ;GET DRIVE PT| 00000600: 52 0D 20 4C 44 41 20 43 55 52 52 45 4E 54 53 41 |R. LDA CURRENTSA| 00000610: 54 0D 20 53 54 41 20 53 41 54 53 45 43 20 3B 53 |T. STA SATSEC ;S| 00000620: 41 56 45 20 54 48 45 20 53 45 43 54 4F 52 20 4E |AVE THE SECTOR N| 00000630: 55 4D 42 45 52 0D 20 4C 44 41 20 28 53 41 54 53 |UMBER. LDA (SATS| 00000640: 45 43 50 54 52 29 2C 59 20 3B 54 55 52 4E 20 4F |ECPTR),Y ;TURN O| 00000650: 46 46 20 42 49 54 0D 20 45 4F 52 20 53 41 54 42 |FF BIT. EOR SATB| 00000660: 49 54 0D 20 53 54 41 20 28 53 41 54 53 45 43 50 |IT. STA (SATSECP| 00000670: 54 52 29 2C 59 20 3B 54 4F 20 41 4C 4C 4F 43 41 |TR),Y ;TO ALLOCA| 00000680: 54 45 0D 20 4C 44 41 20 23 31 20 3B 53 45 54 20 |TE. LDA #1 ;SET | 00000690: 53 41 54 42 55 46 46 45 52 20 4E 45 45 44 53 20 |SATBUFFER NEEDS | 000006A0: 54 4F 20 42 45 0D 20 53 54 41 20 53 41 54 42 55 |TO BE. STA SATBU| 000006B0: 46 46 45 52 46 4C 41 47 20 3B 57 52 49 54 54 45 |FFERFLAG ;WRITTE| 000006C0: 4E 0D 20 43 4C 43 0D 20 52 54 53 20 3B 52 45 54 |N. CLC. RTS ;RET| 000006D0: 55 52 4E 20 54 4F 20 43 41 4C 4C 45 52 20 57 49 |URN TO CALLER WI| 000006E0: 54 48 20 53 55 43 43 45 53 53 0D 3B 0D 3B 2B 2B |TH SUCCESS.;.;++| 000006F0: 20 44 45 2D 41 4C 4C 4F 43 41 54 45 20 41 20 53 | DE-ALLOCATE A S| 00000700: 45 43 54 4F 52 20 42 59 20 54 55 52 4E 49 4E 47 |ECTOR BY TURNING| 00000710: 0D 3B 2B 2B 20 4F 4E 20 54 48 45 20 42 49 54 20 |.;++ ON THE BIT | 00000720: 49 4E 20 54 48 45 20 53 41 54 20 53 45 43 54 4F |IN THE SAT SECTO| 00000730: 52 2E 0D 3B 0D 44 45 41 4C 4C 4F 43 41 54 45 53 |R..;.DEALLOCATES| 00000740: 41 54 53 20 54 41 59 20 3B 53 45 54 55 50 20 46 |ATS TAY ;SETUP F| 00000750: 4F 52 20 43 4F 4E 56 45 52 53 49 4F 4E 0D 20 4C |OR CONVERSION. L| 00000760: 44 41 20 23 30 0D 20 54 41 58 0D 20 4A 53 52 20 |DA #0. TAX. JSR | 00000770: 53 45 43 54 4F 52 32 53 41 54 20 3B 54 4F 20 53 |SECTOR2SAT ;TO S| 00000780: 41 54 20 46 4F 52 4D 41 54 0D 20 4A 4D 50 20 44 |AT FORMAT. JMP D| 00000790: 45 41 4C 4C 4F 43 41 54 45 53 41 54 0D 3B 2B 2B |EALLOCATESAT.;++| 000007A0: 20 54 48 45 20 46 4F 4C 4C 4F 57 49 4E 47 20 52 | THE FOLLOWING R| 000007B0: 45 51 55 49 52 45 53 20 54 48 41 54 0D 3B 2B 2B |EQUIRES THAT.;++| 000007C0: 20 53 41 54 53 45 43 2C 20 53 41 54 42 59 54 2C | SATSEC, SATBYT,| 000007D0: 20 41 4E 44 20 53 41 54 42 49 54 20 42 45 0D 3B | AND SATBIT BE.;| 000007E0: 2B 2B 20 50 52 49 4D 45 44 2E 0D 41 4C 4C 4F 43 |++ PRIMED..ALLOC| 000007F0: 41 42 53 4F 4C 55 54 45 53 20 54 41 59 20 3B 53 |ABSOLUTES TAY ;S| 00000800: 45 54 20 55 50 20 46 4F 52 20 43 4F 4E 56 45 52 |ET UP FOR CONVER| 00000810: 53 49 4F 4E 0D 20 4C 44 41 20 23 30 0D 20 54 41 |SION. LDA #0. TA| 00000820: 58 0D 20 4A 53 52 20 53 45 43 54 4F 52 32 53 41 |X. JSR SECTOR2SA| 00000830: 54 0D 41 4C 4C 4F 43 41 42 53 4F 4C 55 54 45 20 |T.ALLOCABSOLUTE | 00000840: 4C 44 41 20 53 41 54 42 49 54 20 3B 49 4E 56 45 |LDA SATBIT ;INVE| 00000850: 52 54 0D 20 45 4F 52 20 23 24 46 46 20 3B 54 48 |RT. EOR #$FF ;TH| 00000860: 45 20 42 49 54 53 0D 20 53 54 41 20 53 41 54 42 |E BITS. STA SATB| 00000870: 49 54 0D 20 4C 44 41 20 23 32 35 35 20 3B 53 45 |IT. LDA #255 ;SE| 00000880: 54 20 41 42 53 4F 4C 55 54 45 20 41 4C 4C 4F 43 |T ABSOLUTE ALLOC| 00000890: 20 46 4C 41 47 0D 20 2E 42 59 54 20 24 32 43 20 | FLAG. .BYT $2C | 000008A0: 3B 42 49 54 0D 44 45 41 4C 4C 4F 43 41 54 45 53 |;BIT.DEALLOCATES| 000008B0: 41 54 20 4C 44 41 20 23 30 0D 20 53 54 41 20 41 |AT LDA #0. STA A| 000008C0: 4C 4C 4F 43 44 45 41 4C 4C 4F 43 46 4C 0D 20 4C |LLOCDEALLOCFL. L| 000008D0: 44 41 20 53 41 54 53 45 43 20 3B 53 45 45 20 49 |DA SATSEC ;SEE I| 000008E0: 46 20 49 4E 20 4D 45 4D 4F 52 59 0D 20 43 4D 50 |F IN MEMORY. CMP| 000008F0: 20 43 55 52 52 45 4E 54 53 41 54 0D 20 42 45 51 | CURRENTSAT. BEQ| 00000900: 20 44 45 41 4C 4C 4F 43 41 54 45 53 41 54 31 0D | DEALLOCATESAT1.| 00000910: 20 4A 53 52 20 52 45 41 44 53 41 54 53 45 43 54 | JSR READSATSECT| 00000920: 4F 52 0D 20 42 43 43 20 44 45 41 4C 4C 4F 43 41 |OR. BCC DEALLOCA| 00000930: 54 45 53 41 54 31 0D 20 52 54 53 20 3B 52 45 54 |TESAT1. RTS ;RET| 00000940: 55 52 4E 20 49 46 20 45 52 52 4F 52 0D 44 45 41 |URN IF ERROR.DEA| 00000950: 4C 4C 4F 43 41 54 45 53 41 54 31 20 4A 53 52 20 |LLOCATESAT1 JSR | 00000960: 53 45 54 53 41 54 50 54 52 53 20 3B 41 44 44 52 |SETSATPTRS ;ADDR| 00000970: 52 45 53 53 20 42 55 46 46 45 52 0D 20 4C 44 41 |RESS BUFFER. LDA| 00000980: 20 23 3E 53 41 54 42 55 46 46 45 52 0D 20 43 4C | #>SATBUFFER. CL| 00000990: 43 0D 20 41 44 43 20 53 41 54 42 59 54 0D 20 53 |C. ADC SATBYT. S| 000009A0: 54 41 20 53 41 54 53 45 43 50 54 52 2B 31 0D 20 |TA SATSECPTR+1. | 000009B0: 4C 44 59 20 53 41 54 42 59 54 2B 31 20 3B 47 45 |LDY SATBYT+1 ;GE| 000009C0: 54 20 52 45 53 54 20 4F 46 20 4F 46 46 53 45 54 |T REST OF OFFSET| 000009D0: 0D 20 4C 44 41 20 28 53 41 54 53 45 43 50 54 52 |. LDA (SATSECPTR| 000009E0: 29 2C 59 0D 20 4C 44 58 20 41 4C 4C 4F 43 44 45 |),Y. LDX ALLOCDE| 000009F0: 41 4C 4C 4F 43 46 4C 20 3B 43 48 45 43 4B 20 54 |ALLOCFL ;CHECK T| 00000A00: 59 50 45 0D 20 42 4D 49 20 41 4C 4C 4F 43 41 42 |YPE. BMI ALLOCAB| 00000A10: 53 4F 4C 0D 20 4F 52 41 20 53 41 54 42 49 54 0D |SOL. ORA SATBIT.| 00000A20: 20 4A 4D 50 20 41 4C 4C 4F 43 44 45 41 4C 4C 4F | JMP ALLOCDEALLO| 00000A30: 43 53 56 0D 41 4C 4C 4F 43 41 42 53 4F 4C 20 41 |CSV.ALLOCABSOL A| 00000A40: 4E 44 20 53 41 54 42 49 54 0D 41 4C 4C 4F 43 44 |ND SATBIT.ALLOCD| 00000A50: 45 41 4C 4C 4F 43 53 56 20 3D 20 2A 0D 20 53 54 |EALLOCSV = *. ST| 00000A60: 41 20 28 53 41 54 53 45 43 50 54 52 29 2C 59 0D |A (SATSECPTR),Y.| 00000A70: 20 4C 44 41 20 23 31 20 3B 53 45 54 20 4E 45 45 | LDA #1 ;SET NEE| 00000A80: 44 20 57 52 49 54 45 20 46 4C 41 47 0D 20 53 54 |D WRITE FLAG. ST| 00000A90: 41 20 53 41 54 42 55 46 46 45 52 46 4C 41 47 0D |A SATBUFFERFLAG.| 00000AA0: 20 43 4C 43 20 3B 49 4E 44 49 43 41 54 45 20 53 | CLC ;INDICATE S| 00000AB0: 55 43 43 45 53 53 0D 20 52 54 53 20 3B 52 45 54 |UCCESS. RTS ;RET| 00000AC0: 55 52 4E 20 54 4F 20 43 41 4C 4C 45 52 0D 3B 0D |URN TO CALLER.;.| 00000AD0: 52 45 41 44 53 41 54 53 45 43 54 4F 52 20 3D 20 |READSATSECTOR = | 00000AE0: 2A 20 3B 52 45 41 44 20 53 41 54 20 53 45 43 54 |* ;READ SAT SECT| 00000AF0: 4F 52 0D 20 50 48 41 0D 20 4C 44 58 20 53 41 54 |OR. PHA. LDX SAT| 00000B00: 42 55 46 46 45 52 46 4C 41 47 20 3B 42 55 46 46 |BUFFERFLAG ;BUFF| 00000B10: 45 52 20 4E 45 45 44 20 54 4F 20 42 45 20 57 52 |ER NEED TO BE WR| 00000B20: 49 54 54 45 4E 3F 0D 20 42 45 51 20 52 45 41 44 |ITTEN?. BEQ READ| 00000B30: 53 41 54 53 45 43 54 4F 52 31 20 3B 4F 4E 20 49 |SATSECTOR1 ;ON I| 00000B40: 46 20 4E 4F 54 0D 20 4C 44 41 20 43 55 52 52 45 |F NOT. LDA CURRE| 00000B50: 4E 54 53 41 54 20 3B 47 45 54 20 53 45 43 54 4F |NTSAT ;GET SECTO| 00000B60: 52 20 54 4F 20 53 41 56 45 0D 20 4A 53 52 20 57 |R TO SAVE. JSR W| 00000B70: 52 49 54 45 53 41 54 53 45 43 54 4F 52 20 3B 57 |RITESATSECTOR ;W| 00000B80: 52 49 54 45 20 49 54 20 4F 55 54 0D 20 42 43 43 |RITE IT OUT. BCC| 00000B90: 20 52 45 41 44 53 41 54 53 45 43 54 4F 52 31 0D | READSATSECTOR1.| 00000BA0: 20 50 4C 41 0D 20 52 54 53 20 3B 52 45 54 55 52 | PLA. RTS ;RETUR| 00000BB0: 4E 20 57 49 54 48 20 43 41 52 52 59 20 46 4F 52 |N WITH CARRY FOR| 00000BC0: 20 45 52 52 4F 52 0D 52 45 41 44 53 41 54 53 45 | ERROR.READSATSE| 00000BD0: 43 54 4F 52 31 20 50 4C 41 20 3B 47 45 54 20 53 |CTOR1 PLA ;GET S| 00000BE0: 41 56 45 44 20 53 45 43 54 4F 52 0D 20 53 54 41 |AVED SECTOR. STA| 00000BF0: 20 43 55 52 52 45 4E 54 53 41 54 20 3B 4D 41 4B | CURRENTSAT ;MAK| 00000C00: 45 20 49 54 20 43 55 52 52 45 4E 54 0D 20 4A 53 |E IT CURRENT. JS| 00000C10: 52 20 53 41 54 53 45 54 55 50 44 43 42 0D 20 4A |R SATSETUPDCB. J| 00000C20: 53 52 20 52 45 41 44 0D 20 52 54 53 0D 53 41 54 |SR READ. RTS.SAT| 00000C30: 53 45 54 55 50 44 43 42 20 50 48 41 20 3B 53 41 |SETUPDCB PHA ;SA| 00000C40: 56 45 20 46 4F 52 20 41 20 4A 49 46 46 59 0D 20 |VE FOR A JIFFY. | 00000C50: 4A 53 52 20 44 45 46 53 45 54 20 3B 47 45 54 20 |JSR DEFSET ;GET | 00000C60: 54 41 42 4C 45 20 4F 46 46 53 45 54 0D 20 50 4C |TABLE OFFSET. PL| 00000C70: 41 0D 20 43 4C 43 20 3B 41 44 44 20 4F 46 46 53 |A. CLC ;ADD OFFS| 00000C80: 45 54 0D 20 41 44 43 20 50 54 46 53 41 54 2C 58 |ET. ADC PTFSAT,X| 00000C90: 20 3B 53 45 43 54 4F 52 20 4E 55 4D 42 45 52 0D | ;SECTOR NUMBER.| 00000CA0: 20 53 54 41 20 53 45 43 4E 55 4D 2B 32 0D 20 4C | STA SECNUM+2. L| 00000CB0: 44 41 20 23 30 0D 20 53 54 41 20 53 45 43 4E 55 |DA #0. STA SECNU| 00000CC0: 4D 0D 20 53 54 41 20 53 45 43 4E 55 4D 2B 31 0D |M. STA SECNUM+1.| 00000CD0: 20 4A 53 52 20 53 45 43 32 43 59 4C 44 43 42 20 | JSR SEC2CYLDCB | 00000CE0: 3B 43 4F 4E 56 45 52 54 20 54 4F 20 44 43 42 20 |;CONVERT TO DCB | 00000CF0: 46 4F 52 4D 41 54 0D 20 4A 53 52 20 44 45 46 53 |FORMAT. JSR DEFS| 00000D00: 45 54 0D 20 54 58 41 0D 20 4F 52 41 20 48 45 41 |ET. TXA. ORA HEA| 00000D10: 44 20 3B 47 45 54 20 44 52 49 56 45 20 41 4E 44 |D ;GET DRIVE AND| 00000D20: 20 48 45 41 44 0D 20 53 54 41 20 48 44 4E 55 4D | HEAD. STA HDNUM| 00000D30: 0D 20 4C 44 41 20 43 59 4C 4D 53 42 0D 20 53 54 |. LDA CYLMSB. ST| 00000D40: 41 20 53 45 43 41 44 52 0D 20 4C 44 41 20 43 59 |A SECADR. LDA CY| 00000D50: 4C 4C 53 42 0D 20 53 54 41 20 43 59 4C 4E 55 4D |LLSB. STA CYLNUM| 00000D60: 0D 20 4C 44 41 20 23 31 20 3B 45 4E 53 55 52 45 |. LDA #1 ;ENSURE| 00000D70: 20 4F 4E 4C 59 20 4F 4E 45 20 53 45 43 54 4F 52 | ONLY ONE SECTOR| 00000D80: 0D 20 53 54 41 20 42 4C 4B 43 4E 54 0D 20 4C 44 |. STA BLKCNT. LD| 00000D90: 41 20 23 3C 53 41 54 42 55 46 46 45 52 0D 20 53 |A #<SATBUFFER. S| 00000DA0: 54 41 20 42 55 46 41 44 52 0D 20 4C 44 41 20 23 |TA BUFADR. LDA #| 00000DB0: 3E 53 41 54 42 55 46 46 45 52 0D 20 53 54 41 20 |>SATBUFFER. STA | 00000DC0: 42 55 46 41 44 52 2B 31 0D 20 52 54 53 0D 57 52 |BUFADR+1. RTS.WR| 00000DD0: 49 54 45 53 41 54 53 45 43 54 4F 52 20 4A 53 52 |ITESATSECTOR JSR| 00000DE0: 20 53 41 54 53 45 54 55 50 44 43 42 0D 20 4A 53 | SATSETUPDCB. JS| 00000DF0: 52 20 57 52 49 54 45 0D 20 42 43 43 20 57 52 49 |R WRITE. BCC WRI| 00000E00: 54 45 53 41 54 53 45 43 54 4F 58 0D 20 4C 44 41 |TESATSECTOX. LDA| 00000E10: 20 23 30 0D 20 53 54 41 20 53 41 54 42 55 46 46 | #0. STA SATBUFF| 00000E20: 45 52 46 4C 41 47 0D 20 53 45 43 0D 57 52 49 54 |ERFLAG. SEC.WRIT| 00000E30: 45 53 41 54 53 45 43 54 4F 58 20 52 54 53 20 3B |ESATSECTOX RTS ;| 00000E40: 52 45 54 55 52 4E 0D 46 52 45 45 53 41 54 53 45 |RETURN.FREESATSE| 00000E50: 43 54 4F 52 20 2E 42 59 54 20 30 20 3B 46 49 52 |CTOR .BYT 0 ;FIR| 00000E60: 53 54 20 53 41 54 20 57 49 54 48 20 52 4F 4F 4D |ST SAT WITH ROOM| 00000E70: 0D 53 45 54 53 41 54 50 54 52 53 20 4C 44 41 20 |.SETSATPTRS LDA | 00000E80: 23 3C 53 41 54 42 55 46 46 45 52 0D 20 53 54 41 |#<SATBUFFER. STA| 00000E90: 20 53 41 54 53 45 43 50 54 52 0D 20 4C 44 41 20 | SATSECPTR. LDA | 00000EA0: 23 3E 53 41 54 42 55 46 46 45 52 0D 20 53 54 41 |#>SATBUFFER. STA| 00000EB0: 20 53 41 54 53 45 43 50 54 52 2B 31 0D 20 52 54 | SATSECPTR+1. RT| 00000EC0: 53 0D 53 41 54 42 55 46 46 45 52 46 4C 41 47 20 |S.SATBUFFERFLAG | 00000ED0: 2E 42 59 54 20 30 20 3B 53 45 43 54 4F 52 20 43 |.BYT 0 ;SECTOR C| 00000EE0: 48 41 4E 47 45 44 20 46 4C 41 47 0D 43 55 52 52 |HANGED FLAG.CURR| 00000EF0: 45 4E 54 53 41 54 20 2E 42 59 54 20 30 20 3B 53 |ENTSAT .BYT 0 ;S| 00000F00: 41 54 20 49 4E 20 42 55 46 46 45 52 0D 41 4C 4C |AT IN BUFFER.ALL| 00000F10: 4F 43 44 45 41 4C 4C 4F 43 46 4C 20 2E 42 59 54 |OCDEALLOCFL .BYT| 00000F20: 20 30 20 3B 46 4C 41 47 0D 2E 45 4E 44 20 53 41 | 0 ;FLAG..END SA| 00000F30: 54 2E 53 52 43 00 00 00 00 00 00 00 00 00 00 00 |T.SRC...........| 00000F40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000F50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000F60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000F70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
;BPUT"SAT.SRC.;RPUT"SAT.SRC.;.;+++++++++
++++++++++++++++++++++++.;+ ALLOCATE AN
D DE-ALLOCATE +.;+ A SECTOR IN THE
SECTOR +.;+ ALLOCATION TABLE.
+.;+
+.;+ INPUT FOR DE-ALLOCATE: +.
;+ SECTOR NUMBER TO FREE. +.;+
+.;+ OUTPUT
FOR DE-ALLOCATE: +.;+ SATBIT IS
SET ON. +.;+
+.;+ INPUT FOR ALLOCATE: NO
NE +.;+
+.;+ OUTPUT FOR ALLOCATE: +.
;+ SATBIT TURNED OFF, AND +.;+
SECTOR NUMBER OF THE +.;+ NEWL
Y ALLOCATED SECTOR. +.;++++++++++++++
+++++++++++++++++++.;.SATSECPTR = $FB ;A
ND FC.;.ALLOCATESAT LDA FREESATSECTOR. C
MP CURRENTSAT ;IS IT SAME AS SAT IN BUFF
ER?. BEQ ALLOCATESAT1.ALLOCATEREAD JSR R
EADSATSECTOR ;GO GET THE SECTOR. BCC ALL
OCATESAT1. RTS ;RETURN WITH ERROR.ALLOCA
TESAT1 JSR SETSATPTRS. LDX #0 ;SET COUNT
ER. LDY #0 ;INDEX POINTER.ALLOCATESAT2 L
DA (SATSECPTR),Y ;ANY FREE?. BNE ALLOCAT
ESAT3 ;GO IF SO. INY. BNE ALLOCATESAT2.
INX. CPX #2 ;GOT EM ALL?. BEQ ALLOCATESA
T2A. INC SATSECPTR+1 ;BUMP PAGE. BNE ALL
OCATESAT2.ALLOCATESAT2A = *. INC FREESAT
SECTOR ;BUMP. JSR DEFSET ;GET X PTR TO T
ABLE. LDA FREESATSECTOR ;GET NUMBER. CMP
PTFDIR,X ;WAS THERE NO ROOM?. BNE ALLOC
ATEREAD. SEC ;RETURN WITH CARRY FOR NO R
OOM. RTS.ALLOCATESAT3 STY SATBYT ;SAVE O
FFSET. STX SATBYT+1. LDX #$80 ;SET BIT P
OINTER. STX SATBIT.ALLOCATESAT4 ASL A ;S
HIFT A BIT. BCS ALLOCATESAT5. LSR SATBIT
. BNE ALLOCATESAT4.ALLOCATESAT5 JSR DEFS
ET ;GET DRIVE PTR. LDA CURRENTSAT. STA S
ATSEC ;SAVE THE SECTOR NUMBER. LDA (SATS
ECPTR),Y ;TURN OFF BIT. EOR SATBIT. STA
(SATSECPTR),Y ;TO ALLOCATE. LDA #1 ;SET
SATBUFFER NEEDS TO BE. STA SATBUFFERFLAG
;WRITTEN. CLC. RTS ;RETURN TO CALLER WI
TH SUCCESS.;.;++ DE-ALLOCATE A SECTOR BY
TURNING.;++ ON THE BIT IN THE SAT SECTO
R..;.DEALLOCATESATS TAY ;SETUP FOR CONVE
RSION. LDA #0. TAX. JSR SECTOR2SAT ;TO S
AT FORMAT. JMP DEALLOCATESAT.;++ THE FOL
LOWING REQUIRES THAT.;++ SATSEC, SATBYT,
AND SATBIT BE.;++ PRIMED..ALLOCABSOLUTE
S TAY ;SET UP FOR CONVERSION. LDA #0. TA
X. JSR SECTOR2SAT.ALLOCABSOLUTE LDA SATB
IT ;INVERT. EOR #$FF ;THE BITS. STA SATB
IT. LDA #255 ;SET ABSOLUTE ALLOC FLAG. .
BYT $2C ;BIT.DEALLOCATESAT LDA #0. STA A
LLOCDEALLOCFL. LDA SATSEC ;SEE IF IN MEM
ORY. CMP CURRENTSAT. BEQ DEALLOCATESAT1.
JSR READSATSECTOR. BCC DEALLOCATESAT1.
RTS ;RETURN IF ERROR.DEALLOCATESAT1 JSR
SETSATPTRS ;ADDRRESS BUFFER. LDA #>SATBU
FFER. CLC. ADC SATBYT. STA SATSECPTR+1.
LDY SATBYT+1 ;GET REST OF OFFSET. LDA (S
ATSECPTR),Y. LDX ALLOCDEALLOCFL ;CHECK T
YPE. BMI ALLOCABSOL. ORA SATBIT. JMP ALL
OCDEALLOCSV.ALLOCABSOL AND SATBIT.ALLOCD
EALLOCSV = *. STA (SATSECPTR),Y. LDA #1
;SET NEED WRITE FLAG. STA SATBUFFERFLAG.
CLC ;INDICATE SUCCESS. RTS ;RETURN TO C
ALLER.;.READSATSECTOR = * ;READ SAT SECT
OR. PHA. LDX SATBUFFERFLAG ;BUFFER NEED
TO BE WRITTEN?. BEQ READSATSECTOR1 ;ON I
F NOT. LDA CURRENTSAT ;GET SECTOR TO SAV
E. JSR WRITESATSECTOR ;WRITE IT OUT. BCC
READSATSECTOR1. PLA. RTS ;RETURN WITH C
ARRY FOR ERROR.READSATSECTOR1 PLA ;GET S
AVED SECTOR. STA CURRENTSAT ;MAKE IT CUR
RENT. JSR SATSETUPDCB. JSR READ. RTS.SAT
SETUPDCB PHA ;SAVE FOR A JIFFY. JSR DEFS
ET ;GET TABLE OFFSET. PLA. CLC ;ADD OFFS
ET. ADC PTFSAT,X ;SECTOR NUMBER. STA SEC
NUM+2. LDA #0. STA SECNUM. STA SECNUM+1.
JSR SEC2CYLDCB ;CONVERT TO DCB FORMAT.
JSR DEFSET. TXA. ORA HEAD ;GET DRIVE AND
HEAD. STA HDNUM. LDA CYLMSB. STA SECADR
. LDA CYLLSB. STA CYLNUM. LDA #1 ;ENSURE
ONLY ONE SECTOR. STA BLKCNT. LDA #<SATB
UFFER. STA BUFADR. LDA #>SATBUFFER. STA
BUFADR+1. RTS.WRITESATSECTOR JSR SATSETU
PDCB. JSR WRITE. BCC WRITESATSECTOX. LDA
#0. STA SATBUFFERFLAG. SEC.WRITESATSECT
OX RTS ;RETURN.FREESATSECTOR .BYT 0 ;FIR
ST SAT WITH ROOM.SETSATPTRS LDA #<SATBUF
FER. STA SATSECPTR. LDA #>SATBUFFER. STA
SATSECPTR+1. RTS.SATBUFFERFLAG .BYT 0 ;
SECTOR CHANGED FLAG.CURRENTSAT .BYT 0 ;S
AT IN BUFFER.ALLOCDEALLOCFL .BYT 0 ;FLAG
..END SAT.SRC...........................
........................................
........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL