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

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL