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

64FASTGET.SRC

FILE INFORMATION

FILENAME(S): 64FASTGET.SRC

FILE TYPE(S): SEQ

FILE SIZE: 1.6K

FIRST SEEN: 2025-12-02 00:17:46

APPEARS ON: 1 disk(s)

FILE HASH

a37b3b9757f229a15f857b27e73ebb38ecd9000e2aa5f11c4ba4ae3d3f96e592

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
K ASSEMBLER 1 64FASTGET.SRC SEQ Maestro 16 1 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 50 55 54 22 40 31 3A  36 34 46 41 53 54 47 45  |;PUT"@1:64FASTGE|
00000010: 54 2E 53 52 43 22 0D 3B  0D 3B 22 A6 A6 A6 A6 A6  |T.SRC".;.;".....|
00000020: A6 A6 A6 A6 A6 A6 A6 A6  A6 A6 A6 A6 A6 A6 0D 3B  |...............;|
00000030: 22 A6 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |".              |
00000040: 20 20 20 A6 0D 3B 22 A6  20 46 41 53 54 47 45 54  |   ..;". FASTGET|
00000050: 20 52 4F 55 54 49 4E 45  20 A6 0D 3B 22 A6 20 20  | ROUTINE ..;".  |
00000060: 20 43 36 34 20 56 45 52  53 49 4F 4E 20 20 20 A6  | C64 VERSION   .|
00000070: 0D 3B 22 A6 20 20 20 20  20 20 20 20 20 20 20 20  |.;".            |
00000080: 20 20 20 20 20 A6 0D 3B  22 A6 A6 A6 A6 A6 A6 A6  |     ..;".......|
00000090: A6 A6 A6 A6 A6 A6 A6 A6  A6 A6 A6 A6 0D 3B 0D 3B  |.............;.;|
000000A0: 20 2A 0D 3B 20 2A 20 56  45 52 53 49 4F 4E 20 31  | *.; * VERSION 1|
000000B0: 2E 30 0D 3B 20 2A 0D 3B  20 2A 20 4F 52 49 47 49  |.0.; *.; * ORIGI|
000000C0: 4E 41 4C 20 50 52 4F 47  52 41 4D 0D 3B 20 2A 20  |NAL PROGRAM.; * |
000000D0: 42 59 20 43 42 4D 20 49  4E 20 42 32 20 26 20 42  |BY CBM IN B2 & B|
000000E0: 34 0D 3B 20 2A 20 50 55  42 4C 49 43 20 44 4F 4D  |4.; * PUBLIC DOM|
000000F0: 41 49 4E 0D 3B 20 2A 0D  3B 20 2A 20 41 4D 45 4E  |AIN.; *.; * AMEN|
00000100: 44 45 44 20 46 4F 52 20  43 36 34 0D 3B 20 2A 20  |DED FOR C64.; * |
00000110: 42 59 20 50 41 55 4C 20  42 4C 41 49 52 0D 3B 20  |BY PAUL BLAIR.; |
00000120: 2A 20 31 37 20 53 45 50  54 20 31 39 38 33 0D 3B  |* 17 SEPT 1983.;|
00000130: 20 2A 0D 3B 20 2A 0D 3B  20 2A 0D 3B 20 2A 0D 3B  | *.; *.; *.; *.;|
00000140: 20 2A 0D 3B 20 2A 0D 3B  20 2A 0D 3B 20 2A 2A 2A  | *.; *.; *.; ***|
00000150: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 0D  |***************.|
00000160: 3B 0D 3B 50 41 52 41 4D  45 54 45 52 20 41 52 45  |;.;PARAMETER ARE|
00000170: 41 0D 3B 0D 2A 3D 20 24  43 46 30 30 0D 3B 0D 4C  |A.;.*= $CF00.;.L|
00000180: 45 4E 47 54 48 20 3D 2A  2B 30 20 3B 4D 41 58 49  |ENGTH =*+0 ;MAXI|
00000190: 4D 55 4D 20 4C 45 4E 47  54 48 0D 43 48 41 4E 4E  |MUM LENGTH.CHANN|
000001A0: 4C 20 3D 2A 2B 31 20 3B  43 55 52 52 45 4E 54 20  |L =*+1 ;CURRENT |
000001B0: 43 48 41 4E 4E 45 4C 20  46 4C 41 47 0D 4E 44 58  |CHANNEL FLAG.NDX|
000001C0: 41 44 44 20 3D 2A 2B 32  20 3B 41 44 44 52 45 53  |ADD =*+2 ;ADDRES|
000001D0: 53 20 46 4F 52 20 49 4E  44 45 58 20 4C 4F 41 44  |S FOR INDEX LOAD|
000001E0: 0D 43 4F 55 4E 54 20 3D  2A 2B 34 20 3B 43 4F 55  |.COUNT =*+4 ;COU|
000001F0: 4E 54 20 4F 46 20 49 4E  50 55 54 20 43 48 41 52  |NT OF INPUT CHAR|
00000200: 53 2E 0D 3B 0D 3B 20 20  50 41 47 45 23 30 20 41  |S..;.;  PAGE#0 A|
00000210: 44 44 52 45 53 53 45 53  0D 3B 22 20 C5 C5 C5 C5  |DDRESSES.;" ....|
00000220: C5 C5 C5 C5 C5 C5 C5 C5  C5 C5 C5 C5 0D 56 41 52  |.............VAR|
00000230: 42 4C 45 20 3D 24 34 35  0D 56 41 44 44 52 53 20  |BLE =$45.VADDRS |
00000240: 3D 24 34 37 0D 53 54 52  4E 47 20 3D 24 35 30 0D  |=$47.STRNG =$50.|
00000250: 4C 4E 47 54 48 20 3D 24  35 32 0D 53 54 41 54 55  |LNGTH =$52.STATU|
00000260: 53 20 3D 24 39 30 20 3B  49 2F 4F 20 53 54 41 54  |S =$90 ;I/O STAT|
00000270: 55 53 20 57 4F 52 44 0D  3B 0D 3B 20 20 43 36 34  |US WORD.;.;  C64|
00000280: 20 52 4F 55 54 49 4E 45  53 0D 3B 22 20 C5 C5 C5  | ROUTINES.;" ...|
00000290: C5 C5 C5 C5 C5 C5 C5 C5  C5 0D 41 44 44 52 53 20  |..........ADDRS |
000002A0: 3D 24 42 30 45 37 20 3B  43 36 34 20 42 2D 32 2E  |=$B0E7 ;C64 B-2.|
000002B0: 30 0D 44 41 54 41 20 3D  24 43 46 30 42 0D 43 48  |0.DATA =$CF0B.CH|
000002C0: 4B 49 4E 20 3D 24 46 46  43 36 20 3B 4F 50 45 4E  |KIN =$FFC6 ;OPEN|
000002D0: 20 49 4E 50 55 54 20 43  48 41 4E 4E 45 4C 0D 42  | INPUT CHANNEL.B|
000002E0: 41 53 49 4E 20 3D 24 46  46 43 46 20 3B 49 4E 50  |ASIN =$FFCF ;INP|
000002F0: 55 54 20 53 4F 55 52 43  45 20 42 59 54 45 0D 4E  |UT SOURCE BYTE.N|
00000300: 4F 52 4D 49 4F 20 3D 24  46 46 43 43 20 3B 52 45  |ORMIO =$FFCC ;RE|
00000310: 53 54 4F 52 45 20 4E 4F  52 4D 41 4C 20 49 2F 4F  |STORE NORMAL I/O|
00000320: 0D 3B 0D 3B 20 20 4D 41  49 4E 20 50 52 4F 47 52  |.;.;  MAIN PROGR|
00000330: 41 4D 0D 3B 22 20 C5 C5  C5 C5 C5 C5 C5 C5 C5 C5  |AM.;" ..........|
00000340: C5 C5 0D 2A 3D 20 24 43  39 32 45 0D 3B 0D 46 41  |...*= $C92E.;.FA|
00000350: 53 54 49 50 20 4C 44 41  20 23 3C 44 41 54 41 20  |STIP LDA #<DATA |
00000360: 3B 50 41 47 45 20 32 20  53 54 4F 52 41 47 45 0D  |;PAGE 2 STORAGE.|
00000370: 4C 44 59 20 23 3E 44 41  54 41 0D 4A 53 52 20 42  |LDY #>DATA.JSR B|
00000380: 45 47 49 4E 53 0D 4A 4D  50 20 53 45 54 49 50 20  |EGINS.JMP SETIP |
00000390: 3B 53 54 4F 52 45 20 52  45 53 55 4C 54 20 49 4E  |;STORE RESULT IN|
000003A0: 20 49 50 24 0D 3B 0D 49  4E 44 45 58 20 4C 44 41  | IP$.;.INDEX LDA|
000003B0: 20 23 33 32 0D 53 54 41  20 4C 45 4E 47 54 48 0D  | #32.STA LENGTH.|
000003C0: 4C 44 41 20 4E 44 58 41  44 44 0D 4C 44 59 20 4E  |LDA NDXADD.LDY N|
000003D0: 44 58 41 44 44 2B 31 0D  3B 0D 42 45 47 49 4E 53  |DXADD+1.;.BEGINS|
000003E0: 20 4C 44 58 20 43 48 41  4E 4E 4C 0D 53 54 41 20  | LDX CHANNL.STA |
000003F0: 53 54 52 4E 47 0D 53 54  59 20 53 54 52 4E 47 2B  |STRNG.STY STRNG+|
00000400: 31 0D 4C 44 41 20 23 30  30 0D 53 54 41 20 43 4F  |1.LDA #00.STA CO|
00000410: 55 4E 54 0D 4A 53 52 20  43 48 4B 49 4E 20 3B 53  |UNT.JSR CHKIN ;S|
00000420: 45 54 20 55 50 20 46 4F  52 20 54 52 41 4E 53 46  |ET UP FOR TRANSF|
00000430: 45 52 53 0D 47 45 54 42  59 54 20 4A 53 52 20 42  |ERS.GETBYT JSR B|
00000440: 41 53 49 4E 0D 4C 44 59  20 43 4F 55 4E 54 0D 43  |ASIN.LDY COUNT.C|
00000450: 50 59 20 23 24 30 33 0D  42 4D 49 20 47 45 54 32  |PY #$03.BMI GET2|
00000460: 0D 41 4E 44 20 23 24 37  46 0D 47 45 54 32 20 53  |.AND #$7F.GET2 S|
00000470: 54 41 20 28 53 54 52 4E  47 29 2C 59 0D 49 4E 59  |TA (STRNG),Y.INY|
00000480: 0D 53 54 59 20 43 4F 55  4E 54 0D 43 50 59 20 4C  |.STY COUNT.CPY L|
00000490: 45 4E 47 54 48 0D 42 43  53 20 47 45 54 34 0D 4C  |ENGTH.BCS GET4.L|
000004A0: 44 41 20 53 54 41 54 55  53 0D 42 45 51 20 47 45  |DA STATUS.BEQ GE|
000004B0: 54 42 59 54 0D 4C 44 41  20 23 30 30 0D 42 45 51  |TBYT.LDA #00.BEQ|
000004C0: 20 47 45 54 32 0D 47 45  54 34 20 4A 4D 50 20 4E  | GET2.GET4 JMP N|
000004D0: 4F 52 4D 49 4F 0D 53 45  54 49 50 20 4A 53 52 20  |ORMIO.SETIP JSR |
000004E0: 49 50 41 44 44 52 20 3B  49 50 24 3D 3E 44 41 54  |IPADDR ;IP$=>DAT|
000004F0: 41 0D 4C 44 59 20 4C 4E  47 54 48 0D 42 45 51 20  |A.LDY LNGTH.BEQ |
00000500: 53 45 54 30 0D 54 59 41  0D 53 54 41 20 28 53 54  |SET0.TYA.STA (ST|
00000510: 52 4E 47 29 2C 59 0D 49  4E 59 0D 4C 44 41 20 23  |RNG),Y.INY.LDA #|
00000520: 24 46 46 0D 53 54 41 20  28 53 54 52 4E 47 29 2C  |$FF.STA (STRNG),|
00000530: 59 0D 53 45 54 30 20 4C  44 59 20 23 30 0D 4C 44  |Y.SET0 LDY #0.LD|
00000540: 41 20 43 4F 55 4E 54 0D  53 54 41 20 28 56 41 44  |A COUNT.STA (VAD|
00000550: 44 52 53 29 2C 59 0D 49  4E 59 0D 4C 44 41 20 23  |DRS),Y.INY.LDA #|
00000560: 3C 44 41 54 41 0D 53 54  41 20 28 56 41 44 44 52  |<DATA.STA (VADDR|
00000570: 53 29 2C 59 0D 49 4E 59  0D 4C 44 41 20 23 3E 44  |S),Y.INY.LDA #>D|
00000580: 41 54 41 0D 53 54 41 20  28 56 41 44 44 52 53 29  |ATA.STA (VADDRS)|
00000590: 2C 59 0D 52 54 53 0D 3B  0D 49 50 41 44 44 52 20  |,Y.RTS.;.IPADDR |
000005A0: 4C 44 41 20 23 27 49 27  20 3B 47 45 54 20 49 50  |LDA #'I' ;GET IP|
000005B0: 24 20 41 44 44 52 45 53  53 0D 4C 44 59 20 23 32  |$ ADDRESS.LDY #2|
000005C0: 30 38 20 3B 55 50 50 45  52 20 43 41 53 45 20 50  |08 ;UPPER CASE P|
000005D0: 0D 53 54 41 20 56 41 52  42 4C 45 0D 53 54 59 20  |.STA VARBLE.STY |
000005E0: 56 41 52 42 4C 45 2B 31  0D 4A 53 52 20 41 44 44  |VARBLE+1.JSR ADD|
000005F0: 52 53 0D 4C 44 59 20 23  30 30 0D 4C 44 41 20 28  |RS.LDY #00.LDA (|
00000600: 56 41 44 44 52 53 29 2C  59 0D 53 54 41 20 4C 4E  |VADDRS),Y.STA LN|
00000610: 47 54 48 0D 49 4E 59 0D  4C 44 41 20 28 56 41 44  |GTH.INY.LDA (VAD|
00000620: 44 52 53 29 2C 59 0D 53  54 41 20 53 54 52 4E 47  |DRS),Y.STA STRNG|
00000630: 0D 49 4E 59 0D 4C 44 41  20 28 56 41 44 44 52 53  |.INY.LDA (VADDRS|
00000640: 29 2C 59 0D 53 54 41 20  53 54 52 4E 47 2B 31 0D  |),Y.STA STRNG+1.|
00000650: 52 54 53 0D 3B 0D 2E 45  4E 44 0D                 |RTS.;..END.     |
;PUT"@1:64FASTGET.SRC".;.;".............
.......;".                 ..;". FASTGET
 ROUTINE ..;".   C64 VERSION   ..;".    
             ..;"....................;.;
 *.; * VERSION 1.0.; *.; * ORIGINAL PROG
RAM.; * BY CBM IN B2 & B4.; * PUBLIC DOM
AIN.; *.; * AMENDED FOR C64.; * BY PAUL 
BLAIR.; * 17 SEPT 1983.; *.; *.; *.; *.;
 *.; *.; *.; ******************.;.;PARAM
ETER AREA.;.*= $CF00.;.LENGTH =*+0 ;MAXI
MUM LENGTH.CHANNL =*+1 ;CURRENT CHANNEL 
FLAG.NDXADD =*+2 ;ADDRESS FOR INDEX LOAD
.COUNT =*+4 ;COUNT OF INPUT CHARS..;.;  
PAGE#0 ADDRESSES.;" EEEEEEEEEEEEEEEE.VAR
BLE =$45.VADDRS =$47.STRNG =$50.LNGTH =$
52.STATUS =$90 ;I/O STATUS WORD.;.;  C64
 ROUTINES.;" EEEEEEEEEEEE.ADDRS =$B0E7 ;
C64 B-2.0.DATA =$CF0B.CHKIN =$FFC6 ;OPEN
 INPUT CHANNEL.BASIN =$FFCF ;INPUT SOURC
E BYTE.NORMIO =$FFCC ;RESTORE NORMAL I/O
.;.;  MAIN PROGRAM.;" EEEEEEEEEEEE.*= $C
92E.;.FASTIP LDA #<DATA ;PAGE 2 STORAGE.
LDY #>DATA.JSR BEGINS.JMP SETIP ;STORE R
ESULT IN IP$.;.INDEX LDA #32.STA LENGTH.
LDA NDXADD.LDY NDXADD+1.;.BEGINS LDX CHA
NNL.STA STRNG.STY STRNG+1.LDA #00.STA CO
UNT.JSR CHKIN ;SET UP FOR TRANSFERS.GETB
YT JSR BASIN.LDY COUNT.CPY #$03.BMI GET2
.AND #$7F.GET2 STA (STRNG),Y.INY.STY COU
NT.CPY LENGTH.BCS GET4.LDA STATUS.BEQ GE
TBYT.LDA #00.BEQ GET2.GET4 JMP NORMIO.SE
TIP JSR IPADDR ;IP$=>DATA.LDY LNGTH.BEQ 
SET0.TYA.STA (STRNG),Y.INY.LDA #$FF.STA 
(STRNG),Y.SET0 LDY #0.LDA COUNT.STA (VAD
DRS),Y.INY.LDA #<DATA.STA (VADDRS),Y.INY
.LDA #>DATA.STA (VADDRS),Y.RTS.;.IPADDR 
LDA #'I' ;GET IP$ ADDRESS.LDY #208 ;UPPE
R CASE P.STA VARBLE.STY VARBLE+1.JSR ADD
RS.LDY #00.LDA (VADDRS),Y.STA LNGTH.INY.
LDA (VADDRS),Y.STA STRNG.INY.LDA (VADDRS
),Y.STA STRNG+1.RTS.;..END.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL